2016-12-28 140 views
0

我有一个名为场备注看起来像下面这样:如何返回一个固定长度的字符串一个字符串的?

My voter card number is ABC123456789 
    VOter card ID is vbv147258369 
    bnl478512369 

我想从这个领域的所有行只获得一个给定长度的字符串。对于上述输入,和12的串长度,输出应该是

ABC123456789 
vbv147258369 
bnl478512369 

注意,子串的长度是固定的,即12

+2

什么是您的编程语言 – SKLTFZ

+0

'ABC123456789'的大小是12?是你想要的正确输出 –

+1

你正在使用哪个dbms? (你已经有了一个产品的具体答案...) – jarlh

回答

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 
+0

非常特定产品的答案,没有指定的数据库管理系统的问题。 – jarlh

0

检查这。

select Remarks,SUBSTRING(Remarks,PATINDEX('%[0-9]%', Remarks)-3,LEN(Remarks)) 
FROM #TableName 

输出:

enter image description here

0

由于没有RDBMS产品中提到,我会坚持使用算法来回答。您需要使用RIGHT函数并从字符串中提取最后12个字符。如果使用MSSQL RIGHT功能,则在Oracle和其他产品的情况下,可以使用substring函数和length函数的组合来获得所需的输出。

假设字符串函数签名像substring(input,start_poistion, no_of_characters),该方法提取最右边的12个字符是

substring(input_string, length(input_string)-12,12)

如果这不符合您的要求,替代解决方案是使用正则表达式,确定起始位置所需的12个字符并使用子字符串函数提取它。

相关问题