我正在对包含值的表运行查询,其中一些形式为“jsFunc('H:\\ directory \\ subdir \\ whatever.ext')”,其他形式为“jsFunc('\ \\\ ServerName \\ directory \\ subdir \\ whatever.ext')“以及许多其他随机字符串项。
我想选择格式为“H:\\ directory \\ subdir”
的任何内容继承我的询问......
SET @s = 'H:\\\\directory';
SELECT * FROM 'db'.'table' WHERE column LIKE CONCAT('%',@s,'%')
没有产生任何结果。我没有使用变量/ concat尝试过这个。
一些产生结果的值,一些不产生结果(但我认为应该产生)
@s = 'H:'; /* returned rows*/
@s = 'H:\\'; /*no returned rows*/
@s = 'H:\\\\'; /* returned rows*/
@s = 'H:\\\\directory'; /*no returned rows*/
@s = '\\\\directory'; /* returned rows*/
@s = '\\\\directory\\\\subdir'; /*no returned rows*/
/* and worse of all... */
@s = 'H:\\\\directory\\\\subdir'; /*no returned rows. these are the rows I want*/
起初我认为逃避操作的顺序可能会导致问题,因此连接'%'以确保它们没有被转义,但似乎没有区别。在这里有什么样的逃避伏都教,我失踪了吗?
答案 0 :(得分:2)
你应该做@s = 'H:\\'; select @s;
然后你会意识到你需要加倍+双重逃脱才能实现类似的搜索
string H:\\ => H:\\\\\\\\
答案 1 :(得分:0)
尝试以下
SELECT * FROM table WHERE列LIKE('%% H:\\ directory \\ subdir %%')