有没有办法从SQL通配符中排除一个字符?

时间:2017-07-27 17:42:16

标签: sql wildcard sql-like

我正在尝试使用SQL进行文件搜索。我需要在我正在进行比较的目录中保持搜索。在SQL中执行LIKE或NOT LIKE比较时,通配符'%'用于表示0,1或多个字符。有没有办法排除或划分该通配符搜索中涉及的字符?我需要进行如下比较:

LIKE 'C:/Data/%.txt'

但是,我不希望'%'找到通配符搜索中涉及斜杠'/'字符的任何记录。我希望它返回如下例子:

C:/Data/file1.txt
C:/Data/records_2017.txt
C:/Data/listing#7.txt

但是我不希望通配符找到包含斜杠的记录,因为在我的情况下,它超出了我感兴趣的文件搜索当前文件夹:

C:/Data/OtherFolder/file1.txt
C:/Data/System/SomethingElse/records_2016.txt

以上示例将被返回,因为Data之后的斜杠和.txt扩展名之间的所有内容都是通配符的免费游戏。我不希望在我的通配符搜索中返回上述示例。

我尝试过做字符集,例如[^ /],但它似乎只能用斜杠'/'字符排除字符串BEGINNING。我需要阻止通配符在字符串中使用斜杠ANYWHERE。

3 个答案:

答案 0 :(得分:4)

您无法通过单个LIKE执行此操作,但您可以执行此操作:

WHERE MyColumn LIKE 'C:/Data/%.txt'
AND MyColumn NOT LIKE 'C:/Data/%/%.txt'

答案 1 :(得分:0)

大多数数据库都支持某种形式的正则表达式。例如:

justify-self: start;

特定匹配运算符/函数因数据库而异。

答案 2 :(得分:0)

如果您使用的是Oracle,则可以使用UIView.animate(withDuration: 0.5, animations: { imageView.transform = CGAffineTransform(rotationAngle: (CGFloat(Double.pi)) }) { (isAnimationComplete) in // Animation completed } 代替REGEXP_LIKE来更好地控制哪些记录匹配。有关如何使用它的详细信息,请查看this document