Select 特定字符右侧的所有内容

Select everything to the right of a specific character

鉴于此数据:

Home: (708) 296-2112  

我想要 : 字符右侧的所有内容。

这是我目前的结果,但我没有得到任何结果:

right(phone1, locate(':', phone1 + ':')-1) phone

如果我使用 left 而不是 right,我只会得到 "HOME" - 仅用于测试目的。我知道我很接近,但我错过了一些东西。

你走在正确的轨道上,但你的代数不对。您想将字符串的全长减去冒号的位置,减去一个:

right(phone1, length(phone1) - locate(':', phone1) - 1)

您可以使用 SUBSTRING(可能 SUBSTR 取决于您的版本):

SELECT SUBSTRING(phone1, LOCATE(':', phone1) + 1, LENGTH(phone1))
FROM yourtable

这是在 Home: 中不使用 hard-coding 的方法,因此您也可以使用 Office:Mobile:Fax:,或任何其他单词后跟一个冒号。

这使用 ADS 的脚本功能来使用变量和 built-in System.iota 单行 table(类似于 Oracle 的 dual)。您可以只使用最后一行,将 test 替换为您的列名称,将 system.iota 替换为您的 table.

的名称
declare test string;
set test = 'Home: (708) 296-2112';
select substring(test, position(':' in test) + 1, length(test)) from system.iota;

您可以按如下方式使用RIGHT功能:

RIGHT(phone1, LEN(phone1)-CHARINDEX(':', phone1))