SQL server 2000 Like 语句用法

Posted

技术标签:

【中文标题】SQL server 2000 Like 语句用法【英文标题】:SQL server 2000 Like Statement Usage 【发布时间】:2008-09-18 20:10:09 【问题描述】:

我有一个如下所示的 SQL 语句:

SELECT [Phone]
FROM [Table]
WHERE
(
    [Phone] LIKE '[A-Z][a-z]'
    OR [Phone] = 'N/A'
    OR [Phone] LIKE '[0]'
)

我遇到问题的部分是带有“LIKEs”的 where 语句。我已经看到 SQL 语句,其中作者以我上面使用它们的方式使用了like 语句。起初,我认为这可能是正则表达式的一个版本,但后来我学会了。

有没有人熟悉以这种方式使用 like 语句。注意:“N/A”工作正常。

我需要匹配的是有字符的电话号码。或只包含零的电话号码。

【问题讨论】:

【参考方案1】:

检查here。

[] 匹配一系列字符。

我想你想要这样的东西:

SELECT [Phone]
FROM [Table]
WHERE
(
    [Phone] LIKE '%[A-Z]%'
    OR [Phone] LIKE '%[a-z]%'
    OR [Phone] = 'N/A'
    OR [Phone] LIKE '0'
)

【讨论】:

被遗忘的分号(很棒的用户名),谢谢。该链接正是我所需要的。我在谷歌搜索中找不到它。你的例子也帮助我认识到了错误。【参考方案2】:

尝试使用t-sql ISNUMERIC 函数。这会告诉你哪些是/不是数字。

你可能还需要TRIMREPLACE 空格来获得你想要的。

例如,要查找有效的电话号码,请将空格替换为 '',使用 ISNUMERIC 进行测试,并使用 LEN 进行测试。

虽然我会警告你,但如果你必须处理国际电话号码,这将是乏味的。

上面的 SQL 需要注意的是,SQL Server 不理解正则表达式。

【讨论】:

感谢您的回复。我想过使用 IsNumeric 函数,但如果我没记错的话,那个函数是有问题的。我确实必须处理国际电话号码,这就是为什么我认为这个解决方案不适合我。非常感谢!

以上是关于SQL server 2000 Like 语句用法的主要内容,如果未能解决你的问题,请参考以下文章

sql server 中 in 和like 有啥区别?

sql server 中 like 中文不匹配问题

在sql语句中,like所有的用法

sql语句中like的用法详细解析

SQL中like的用法

SQL中的LIKE语句的用法