匹配 table 值中第一个字符匹配查询的位置
Match where first characters in table value match query
我希望能够在 table 中进行搜索,其中有时 table 有全名,但有时只有首字母。我可以在首字母后面放任何字符,下面显示一个*。
姓名
信息
一个*
富
鲍勃
栏
麦克
嘘
如果我搜索 Andrew,我希望能够 return A*,因为这是可能的。我正在尝试类似的方法,但它不起作用。
SELECT name, info FROM table WHERE
IF( RIGHT(name,1)="*" , CONCAT(LEFT(name,1) , "%") , name )
LIKE 'Andrew';
有人可以帮忙吗?
您的想法是正确的,但是您将 like
运算符的操作数颠倒了。通配符应该在右边的运算符上:
SELECT *
FROM mytable
WHERE 'Andrew' LIKE IF( RIGHT(name,1) = '*', CONCAT(LEFT(name, 1), '%'), name)
您可以将 *
替换为 %
并使用 like
:
where 'Andrew' like replace(name, '*', '%')
我希望能够在 table 中进行搜索,其中有时 table 有全名,但有时只有首字母。我可以在首字母后面放任何字符,下面显示一个*。
姓名 | 信息 |
---|---|
一个* | 富 |
鲍勃 | 栏 |
麦克 | 嘘 |
如果我搜索 Andrew,我希望能够 return A*,因为这是可能的。我正在尝试类似的方法,但它不起作用。
SELECT name, info FROM table WHERE
IF( RIGHT(name,1)="*" , CONCAT(LEFT(name,1) , "%") , name )
LIKE 'Andrew';
有人可以帮忙吗?
您的想法是正确的,但是您将 like
运算符的操作数颠倒了。通配符应该在右边的运算符上:
SELECT *
FROM mytable
WHERE 'Andrew' LIKE IF( RIGHT(name,1) = '*', CONCAT(LEFT(name, 1), '%'), name)
您可以将 *
替换为 %
并使用 like
:
where 'Andrew' like replace(name, '*', '%')