我有一个名为备注的字段,如下所示:
My voter card number is ABC123456789
VOter card ID is vbv147258369
bnl478512369
我想从此字段中的所有行中仅获取给定长度的子字符串。对于上面的输入,子串长度为12,输出应为
ABC123456789
vbv147258369
bnl478512369
注意子串的长度是固定的,即12
答案 0 :(得分:0)
尝试:
DECLARE @CONTENT TABLE(REMARK VARCHAR(MAX))
INSERT INTO @CONTENT VALUES('My voter card number is ABC123456789');
INSERT INTO @CONTENT VALUES('VOter card ID is vbv147258369');
INSERT INTO @CONTENT VALUES('bnl478512369');
SELECT CASE charindex(' ',REMARK)
WHEN 0 THEN REMARK
ELSE REVERSE(SUBSTRING(REVERSE(REMARK),0,CHARINDEX(' ',REVERSE(REMARK))))
END as REMARK FROM @CONTENT
答案 1 :(得分:0)
检查这个。
select Remarks,SUBSTRING(Remarks,PATINDEX('%[0-9]%', Remarks)-3,LEN(Remarks))
FROM #TableName
输出:
答案 2 :(得分:0)
由于没有提到RDBMS产品,我将坚持用算法回答。您需要使用RIGHT
函数并从String中提取最后12个字符。如果MSSQL RIGHT
功能可用,对于Oracle和其他产品,您可以使用substring
函数和length
函数的组合来获得所需的输出。
假设子字符串函数具有substring(input,start_poistion, no_of_characters)
之类的签名,那么提取最多12个字符的方法是
substring(input_string, length(input_string)-12,12)
如果这不符合您的要求,替代解决方案是使用正则表达式,识别所需12个字符的起始位置并使用子字符串函数提取它。