我正在SQL Server 2012中开发存储过程
在某些方面,我想确定条件,如果“NAME”包含子字符串@pattern, Case Insesitive-ly
@pattern是仅包含小写字母的字符串
不知怎的,我已经尝试了
http://
很好
但是当我添加LOWER()
时 where CONTAINS(NAME, @pattern)
它给我语法错误。
我是T-SQL的新手,有人可以帮帮我吗?
谢谢!
答案 0 :(得分:2)
如果您的表格没有全文索引,那么CONTAINS
将无效
以下解决您问题的其他变体:
DECLARE @table AS TABLE ( SomeText VARCHAR(40) )
INSERT INTO @table
VALUES ( 'abcdfh' ),
( 'ghijkl' ),
( 'mnopq' );
DECLARE @pattern AS VARCHAR(10)
SET @pattern = '%abc%'
--variant using like
SELECT T.sometext
FROM @table AS T
WHERE T.SomeText LIKE @pattern
--variant using PATINDEX
SELECT sometext
FROM @table AS T
WHERE PATINDEX(@pattern, T.SomeText) > 0
--variant using CHARINDEX, but it can't be used with '%' and '[ ]',
--just to find first char position of the searched word in text as below
SET @pattern = 'abc'
SELECT sometext
FROM @table AS T
WHERE CHARINDEX(@pattern, T.SomeText) > 0