MySQL - 在字符串中搜索括号和空格

时间:2014-08-22 00:34:25

标签: mysql space square-bracket

我有一个数据库,其名称必须采用以下格式:第一个[ID号]

这些名称是手动输入的,有时输入不正确,没有第二个空格,如下所示:第一个[ID号码]

我的目的是搜索不正确格式的所有实例。我正在尝试找到一种方法来搜索字符串中包含以下内容的表达式:

  • 左括号前面紧跟一个字母,而不是所需的空格
  • 只有一个空格(或两个,我可以使用NOT LIKE)
  • 一个空格,后跟左括号,我可以使用NOT LIKE

我进行了广泛的搜索,并且我尝试了几个命令,如RLIKE,REGEXP,NOT LIKE,SPACE等。我无法获得任何工作。这里只是我尝试过的一个例子,它返回正确和错误的条目:

SELECT CO.name 'User'
FROM tcompany CO
WHERE CO.name NOT LIKE '%. \\['
ORDER BY CO.name ASC;

4 个答案:

答案 0 :(得分:1)

使用:

WHERE CO.name NOT LIKE '% [%'

答案 1 :(得分:1)

我认为这可能会对你有所帮助。您实际上可以搜索 NOT 以查找所需的字符串,剩余的是您匹配的记录。

SELECT CO.name 'User'
FROM tcompany CO
WHERE CO.name NOT LIKE '(Select CONCAT(FIRST, " " ,LAST) from User) [%%]'
ORDER BY CO.name ASC;

答案 2 :(得分:0)

这很有意思。因此,为了满足您的第一个条件,以下方法将有效

SELECT CO.name 'User'
FROM tcompany CO
WHERE CO.name NOT LIKE '%[ ][[]%'
ORDER BY CO.name ASC;

答案 3 :(得分:0)

另一个专门用于在左括号前找到缺失空格的选项:

WHERE SUBSTR(CO.name, LOCATE('[', CO.name) - 1, 1) <> ' '

如果你想纠正它们:

UPDATE tcompany
SET name = REPLACE(name, '[', ' [')
WHERE SUBSTR(name, LOCATE('[', name) - 1, 1) <> ' '