【问题标题】:Use WHERE clause to find a specific data type使用 WHERE 子句查找特定数据类型
【发布时间】:2013-10-04 13:59:28
【问题描述】:

我正在尝试找到一种方法来查询仅包含某种数据类型的字段。

例如,我想返回 dbo.tableA.ColumnA 中包含字符串的所有值 '___-___' 其中每个 _ 是一个数字字符。 (- 只是一个普通的破折号)

另外,我知道这可以使用动态查询(我没有经验)来完成,并且我知道那些高级查询可能需要创建临时表,这是我无法做到的,因为我只是查询快照,因此没有写入权限。

我已经尝试过寻找答案,但没有成功。请帮忙。谢谢。

【问题讨论】:

    标签: sql sql-server sql-server-2008-r2 sqldatatypes


    【解决方案1】:

    您可以为此使用LIKE 运算符。

    SELECT ColumnA 
    FROM dbo.tableA
    WHERE ColumnA LIKE '%[0-9][0-9][0-9]-[0-9][0-9][0-9]%'
    

    【讨论】:

    • 谢谢!这肯定会起作用,我是否也可以使用 WHERE ColumnA LIKE '%[a-z][a-z][a-z]%' 进行类似的搜索来查找字母字符?还是我太贪心了
    • @AdamW。是的,您可以,尽管这更依赖于它将匹配的内容。在区分大小写的排序规则中,它不会匹配 Z(但会匹配 A
    • 嗯,恐怕我不完全理解您所说的区分大小写排序规则是什么意思,我认为所有 T-SQL 编码都是不区分大小写的?谢谢你的回答顺便说一句
    • @AdamW.:也许您的服务器默认配置为使用不区分大小写的排序规则,这可能就是您不知道该问题的原因。列、数据库或服务器可以配置为使用任意排序规则,包括区分大小写的排序规则。 See this(4 个语句,但只有 3 个匹配项)用于说明排序规则如何影响处理字符串的谓词的结果。阅读 SQL Server 中的排序规则以了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2016-03-06
    • 2016-01-13
    • 1970-01-01
    • 2020-05-19
    • 2013-12-29
    • 2011-05-20
    相关资源
    最近更新 更多