SQL Server 2014 - 如何选择字段中没有数值的行?

Posted

技术标签:

【中文标题】SQL Server 2014 - 如何选择字段中没有数值的行?【英文标题】:SQL Server 2014 - How to select rows with no numerical values in fields? 【发布时间】:2018-04-18 17:30:09 【问题描述】:

我正在尝试查找电话号码字段中没有任何内容且电子邮件地址字段中没有任何内容的帐户。但是当我使用 ISNUMERIC 函数过滤带有电话号码的记录时,我仍然会得到一些带有数字的记录。

我的代码:

SELECT * FROM MyTable
WHERE (ISNUMERIC(DayTimePhone) = 0 OR DayTimePhone IS NULL)
  AND (DayTimePhone NOT LIKE '%[A-Z]%')
  AND ((EMailAddress IS NULL) OR (EMailAddress NOT LIKE '%[A-Z]%'))

我在 DayTimePhone 字段中得到的数字是:

604.123.1123
(604) 123-1234
(604) 234-5678
(604) 345-6789

【问题讨论】:

【参考方案1】:

您可以使用LEN 按列中字符的长度过滤列,并查找这些字段为空的所有记录。大概是这样的吧?

SELECT 
    * 
FROM MyTable
WHERE
    (LEN(ISNULL(DayTimePhone, '')) = 0 OR DayTimePhone IS NULL)
    AND ((EmailAddressIS NULL) OR (LEN(ISNULL(EmailAddress, '')) = 0))

【讨论】:

【参考方案2】:

这些值中除了数字之外还有其他字符,因此它们 ISNUMERIC() 返回 0。您可以执行选择以获取不带特殊字符的值,然后运行您的代码。

【讨论】:

以上是关于SQL Server 2014 - 如何选择字段中没有数值的行?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 仅从字段中选择日期 [重复]

sql server 2005中如何修改字段名

如何在日期字段 SQL Server 中仅设置天数

SQL Server 2014如何导出数据库

sqlserver如何修改表某个字段的属性?

选择 SQL Server 中排名第二的行