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))
鉴于此数据:
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))