在SQL语句中使用WHERE COLUMN如'%[_] [01] [7812]'的目的是什么?

时间:2018-03-08 14:10:46

标签: mysql sql syntax

在SQL语句中使用WHERE COLUMN like '%[_][01][7812]'的目的是什么?

我得到了一些结果,但不知道如何正确使用。

我看到它正在搜索基地,但我不明白这种模式。

4 个答案:

答案 0 :(得分:1)

Like选择与模式类似的字符串。您正在查看的模式使用了几个通配符,您可以在此处查看:https://www.w3schools.com/SQL/sql_wildcards.asp

简单地说,查询似乎匹配COLUMN以_结尾然后是0或1,然后是7,8,1或2的任何行。(因此它匹配' blah_07'但不是' blah_81',' blah_0172',或' blah18')

答案 1 :(得分:0)

首先,您可能知道where子句用于过滤行。 在您的情况下(Where %[_][01][7812]列)意味着找到以[_][01][7812]结尾的列,并且可能存在%

的任何位置

答案 2 :(得分:0)

虽然您已标记了自己的帖子MySQL,但该代码似乎不太适合它。对我来说,tez.am.vertex.max-task-concurrency模式类似于Microsoft SQL Server's variation on the syntax,它会匹配以下划线后跟零或一个结尾的任何内容,然后是7,8 a 1或2。

所以你的例子'TA01_55_77'不匹配,但是'TA01_55_18'会,'GZ01_55_07'

(在SQL Server中,在方括号中包含一个像'_'这样的通配符转义它,将其转换为文字下划线。)

当然,可能还有其他RDBMS具有相似的语法,但是你所呈现的内容似乎不会对你在MySQL中运行时获得的数据起作用。

答案 3 :(得分:0)

declare 
@searchString varchar(50) = '[_][01][7812]', 
@testString varchar(50) = 'BeginningOfString' + '[_][01][7812]' + 'EndofString'
select CHARINDEX(@searchString, @testString), @testString, LEN(@testString) as [totalLength]

set @testString = '[_][01][7812]' + 'EndofString'
select CHARINDEX(@searchString, @testString), @testString, LEN(@testString) as [totalLength]


set @testString = 'BeginningOfString' + '[_][01][7812]'
select CHARINDEX(@searchString, @testString), @testString, LEN(@testString) as [totalLength]