【问题标题】:how to use the sql character array wilcard?如何使用sql字符数组通配符?
【发布时间】:2016-11-21 15:54:25
【问题描述】:

您好,我正在使用 SQL DB2 并尝试在以F25 开头并以不包含.. 的任何字符结尾的列中查找所有值

所以例如以下是允许的

F2501
F25AB
F25ab
F25A.

我曾想过我可以做这样的事情:

where col like 'F25[!..]'

但是,这不会显示我知道存在此类代码的行,即F25AB

我在这里做错了什么?

【问题讨论】:

  • 必须使用not contains()position()
  • 你可以使用where col like 'F25%' and right(col,2) <> '..'

标签: sql db2 wildcard


【解决方案1】:

[! 在 SQL 中都不是通配符。

SQL LIKE 支持的唯一通配符是% 用于任意数量的字符,_ 用于单个字符。

要做你想做的事,使用

where col LIKE 'F25%' -- starts with F25
  and col NOT LIKE '%..'  -- does not end with ..

【讨论】:

  • 嗯 w3schools 提到 charlists 作为通配符的一种形式? w3schools.com/sql/sql_wildcards.asp
  • 不知道locate_in_string(col,'..',-1) <> length(col) -2是否比NOT LIKE快
  • @brucezepplin:众所周知,w3fools 充满了错误。
  • @brucezepplin -- 这仅对 SQL Server 有效。
【解决方案2】:

使用 xquery 尝试正则表达式。或者,如果您使用 db2 luw 11.1,您可以直接从 SQL 中使用常规表达式函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2021-09-27
    • 2021-08-30
    • 2011-06-22
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多