我在SQL(Mysql)中有一个使用where子句的查询。
SELECT * FROM TABLE WHERE name = 'Bristols';
现在我知道表中有一行包含带撇号的Bristol's
,但没有一行没有撇号。不过,我还是想把这一行还回去。问题是,我只能给查询提供一个值,而不能一个撇号:Bristols
-在查询中有任何方法可以从查询正在搜索的字段中删除撇号吗?
SELECT * FROM TABLE
WHERE replace(name, '''', '') = 'Bristols'
有几种方法可以实现这一点:
请参见Fiddle
-
Regex:
SELECT * FROM cities WHERE name REGEXP 'Bristol''?s';
-
替换:
SELECT * FROM cities WHERE 'Bristols' = replace(name,'''','');
-
显式匹配:
SELECT * FROM cities WHERE name IN('Bristols','Bristol''s');
您有两种可能的前景:
第一:
SELECT * FROM TABLE WHERE name LIKE '%Bristol%' // Gather data like: BrISTOLS, Bristols, Bristol, Bristol's,
第二:
SELECT * FROM TABLE WHERE replace(name,'''','') = 'Bristols'