我可以从SQL搜索中删除撇号吗(WHERE子句)


Can I remove an apostrophe from an SQL search (WHERE clause)?

我在SQL(Mysql)中有一个使用where子句的查询。

SELECT * FROM TABLE WHERE name = 'Bristols';

现在我知道表中有一行包含带撇号的Bristol's,但没有一行没有撇号。不过,我还是想把这一行还回去。问题是,我只能给查询提供一个值,而不能一个撇号:Bristols-在查询中有任何方法可以从查询正在搜索的字段中删除撇号吗?

SELECT * FROM TABLE
WHERE replace(name, '''', '') = 'Bristols'

有几种方法可以实现这一点:

请参见Fiddle

  1. Regex:

    SELECT  * 
    FROM    cities
    WHERE   name REGEXP 'Bristol''?s';
    
  2. 替换:

    SELECT  * 
    FROM    cities
    WHERE   'Bristols' = replace(name,'''','');
    
  3. 显式匹配:

    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'