【问题标题】:How to select a table entry which is a substring to a value如何选择作为值的子字符串的表条目
【发布时间】:2014-03-12 18:23:54
【问题描述】:

我有这个问题:

我想确定表列中的字符串是否是给定值的子字符串。

此表(T_Prefix)包括一组电话号码前缀:

前缀:0175、036840、0162、...

现在我有以下电话号码:017512345789

我的目标是识别这个电话号码的前缀。因此,我想像这样启动一个 sql 语句:

SELECT * from T_Prefix where prefix = LEFT(prefix,x_len);

问题是我必须减少字符串的长度。

还有机会吗? 我可以在存储过程的帮助下做到这一点吗?

【问题讨论】:

  • 所以您想查看某个记录上是否存在前缀?即你递给我一个电话#,我告诉你它是否存在(是|否)——或者——返回实际的前缀?

标签: sql db2


【解决方案1】:

您可以通过以下方式识别前缀:

select max(prefix)
from t_prefix p
where '017512345789' like concat(p.prefix, '%');

where 子句查找所有匹配的前缀。 max() 返回最长的一个(因为任何两个前缀都以与较短前缀相同的字符开头,所以最大值是最长的)。

【讨论】:

    【解决方案2】:

    另一个选项可能是

    SELECT 
      PREFIX 
    FROM
      T_PREFIX
    WHERE
      LOCATE(PREFIX, '017512345789') = 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      相关资源
      最近更新 更多