SQL LIKE 具有不同的通配符模式

SQL LIKE with different wild cards pattern

我有一个获取用户输入的表单。在名称文本框字段中,用户将指定他希望如何实现 WILD Card。例如,如果他输入 abc 查询应该是:

Select * from Student where Name Like '%' '@Name' + '%'

如果他输入 abc** 应该告诉查询 return 行名称从 abc

开始
Select * from Student where Name Like '@Name' + '%'

如果他输入 *abc* 应该告诉查询 return 行的名称以 abc

结尾
Select * from Student where Name Like '%' + '@Name'

如何编写处理此类用户输入的查询? Regex 会有帮助吗?

Declare @sqlText varchar(max)= "Select * from Student where Name Like '" + Replace(userinputtext, "*", "%") + "'";
Exec(@sqlText)

你应该试试下面的方法,

DECLARE @Name AS VARCHAR(100)='*kklik'

IF(CHARINDEX('*', @Name) = 1)
BEGIN
    Select * from Student where Name Like '@Name' + '%'
END
ELSE IF(CHARINDEX('*', @Name) >= 1)
BEGIN
    Select * from Student where Name Like '@Name' + '%'
END

试试这个

DECLARE @Name AS VARCHAR(100)='abc*'

if (CHARINDEX('*', @Name)>1)
  set @Name=Replace(@Name, '*', '%')
else 
  set @Name='%'+@Name+'%'

Declare @sqlText varchar(max)= "Select * from Student where Name Like '" + Replace(userinputtext, "*", "%") + "'";
Exec(@sqlText)