SQL中的NOT LIKE IN语句[重复]

Posted

技术标签:

【中文标题】SQL中的NOT LIKE IN语句[重复]【英文标题】:NOT LIKE IN statement in SQL [duplicate] 【发布时间】:2017-08-10 13:28:01 【问题描述】:

我需要打印不以元音开头和结尾的名称。我试过这样:

SELECT DISTINCT name FROM people WHERE
lower(name) NOT LIKE IN ('a','e','i','o','u')%('a','e','i','o','u');

我出错了。

【问题讨论】:

看看***.com/questions/3014940/… 【参考方案1】:

在大型数据集的情况下,出于性能原因,您可能希望尽量避免使用REGEXP

在这种情况下是TRANSLATE你的朋友。

1) 将所有元音翻译成一个代表

2) 使用所选元音执行正常的 LIKE 谓词

select txt from tab1
where translate(lower(txt),'aeiou','aaaaa') not like 'a%a';

REGEXP 非常强大,但不应该用于重要的数据集,以防它们可以避免。 (我的 8M 行测试数据给出了使用 TRANSLATE 的 7 秒与使用 REGEXP 的 2 分钟以上)。

【讨论】:

【参考方案2】:

您可以使用regexp_like 和匹配参数i 进行不区分大小写的匹配:

select distinct name from people
where not regexp_like(name, '^[aeiou]($|.*[aeiou]$)', 'i');

图案细节:

^[aeiou] - 以元音开头 ($|.*[aeiou]$) - 要么只有一个字符(在第一步匹配)要么以元音结尾。

【讨论】:

以上是关于SQL中的NOT LIKE IN语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server如何防止动态sql中的sql注入

C# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()

标准 sql 中的 bigquery 旧版 sql POSITION() 函数

sql (SSMS) 中的 CONVERT 函数是不是可以替换为 Pyspark.sql 中的类似函数。换句话说,有没有类似的功能?

SQL service 中的 ”输入SQL命令窗口“ 打开了 “属性界面” 回到 ”输入SQL命令窗口“

sql SQL中的数据类型