在SQL语句中使用WHERE COLUMN like '%[_][01][7812]'
的目的是什么?
我得到了一些结果,但不知道如何正确使用。
我看到它正在搜索基地,但我不明白这种模式。
答案 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]