2016-12-28 34 views
0

私は次のようになります備考をという名前のフィールドがあります。文字列から固定長の部分文字列を返す方法は?

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

私はこの分野のすべての行から指定された長さの唯一のサブストリングを取得したいです。

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

あなたのプログラミング言語は何ですか – SKLTFZ

+0

'ABC123456789'のサイズは12ですか?あなたが望む正しい出力です –

+1

どのdbmsを使用していますか? (あなたはすでに一つの製品固有の答えを持っています...) – jarlh

答えて

0

として試してみてください固定されていることを

ABC123456789 
vbv147258369 
bnl478512369 

注意する必要があります。

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

出力:なしRDBMS製品が言及されていないので

enter image description here

+0

dbmsが指定されていない質問に対する製品固有の回答が非常に多い。 – jarlh

0

はこれをチェックしてください:上記の入力、および12のサブストリングの長さのために、出力は列の長さは、すなわち12

0

、私はアルゴリズムで答えるように固執します。 RIGHT関数を使用し、最後の12文字をStringから抽出する必要があります。 MSSQL RIGHTの場合、Oracleなどの製品では、substring関数とlength関数の組み合わせを使用して、目的の出力を得ることができます。 substring関数を仮定し

が、これはあなたの要件を満たしていない場合は、代替ソリューションは、開始位置を特定し、正規表現を使用することで抽出する方法が一番右の12文字が

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

で、substring(input,start_poistion, no_of_characters)のような署名を持っていますサブストリング機能を使用して抽出します。

関連する問題