【问题标题】:how to skip particular character(s) in SQL LIKE query如何在 SQL LIKE 查询中跳过特定字符
【发布时间】:2017-02-05 05:10:27
【问题描述】:

我有一个表(比如用户),其中有一列说名称。

你可能认为表结构如下所示:

-------------
name
--------------
Abdul Khalid
--------------
Abdul, Khalid
--------------
Abdul - Khalid
--------------
other names

我的问题是,如果我跳过"," 和 "-" 字符)。

【问题讨论】:

  • 我删除了不兼容的数据库标签。请标记您真正使用的数据库。

标签: sql


【解决方案1】:

你可以使用like:

select t.*
from t
where name like 'Abdul%Khalid';

如果您希望在字符串中的任何位置(但按该顺序)中的名称,则将通配符放在开头:

select t.*
from t
where name like '%Abdul%Khalid%';

如果您将值作为变量传递:

select t.*
from t
where name like replace('Abdul Khalid', ' ', '%');

【讨论】:

  • 您的查询也匹配 'Abdul Khalid'
【解决方案2】:

对于 PostgreSQL 最好使用 '~'

 name ~ '^Abdul[ ,-]Khalid$'

或者如果你也想在字符串中间:

name ~ 'Abdul[ ,-]Khalid'

或者您可以对任何 SQL 使用 translate(带有索引):

translate(name, ' ,-') = 'AbdulKhalid'

【讨论】:

    【解决方案3】:

    你也可以像这样使用 REGEXP:

    SELECT * from yourTable where name REGEXP 'Abdul( |, | - )Khalid';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      相关资源
      最近更新 更多