【发布时间】:2019-11-12 03:52:42
【问题描述】:
我需要选择名称中包含非字母数字值的行。我得到了解决方案的一部分,但是,我也得到了带有空格、连字符和单引号的行。所以,我需要拉出带有字母数字的行,也不要拉出带有空格和- 和' 的行。
在网上做了一些研究
select *
from EMP
where NAME like '%[^a-z,1-9]%'
我不想得到带有- 或空格或' 的行
【问题讨论】:
-
在(标准)SQL 中,
LIKE支持的唯一通配符是%用于“任意数量的字符”和_用于“单个字符”。您似乎假设 LIKE 支持 SQL 中的某种正则表达式语法 - 事实并非如此。至少不在标准 SQL 中(sql所指的标签) -
@a_horse_with_no_name 很确定 topicstarter 在这里是指 SQL Server (MSSQL)。由于 SQL Server 在 LIKE 运算符中支持一些非常有限的正则表达式。
-
@RaymondNijland:我们不知道。也许 OP 只是找到了一些声称“SQL”会支持它的答案,现在她/他很惊讶这不适用于尊重 SQL 标准的 DBMS。
-
“我们不知道”我们“知道”或至少很确定 @a_horse_with_no_name 注意到 topicstarter 所说的“但是,我也得到带有空格、连字符和单引号的行”,所以他是使用尊重这种 SQL 方言的 DBMS .. 或者他正在使用 sybase,这也是可能的。
-
@MJoy 顺便说一句,我确实同意 a_horse_with_no_name,topicstarter 应该提供更多信息或使用正确的标记。更不用说提供示例数据和预期结果了。
标签: sql sql-server