如何选择作为值的子字符串的表条目

时间:2014-03-12 18:23:54

标签: sql db2

我有这个问题:

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

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

前缀:0175,036840,0162,......

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

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

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

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

还有机会吗? 我可以借助存储过程来完成这项工作吗?

2 个答案:

答案 0 :(得分:0)

您可以通过执行以下操作来识别前缀:

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

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

答案 1 :(得分:0)

另一种选择可能是

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