web-dev-qa-db-ja.com

SQL文字列に文字を挿入します

文字列内の固定小数点にハイフンを挿入する必要があるnvarchar列があります。ハイフンは、右端の文字と次の文字の間を行き来する必要があります。また、右から3番目の位置にある必要があります。

0000050704 

そして私はそれが必要です

0000050-70-4

または値は

0555256321 

そしてそれは

0555256-32-1

これがどのように行われるのかわかりません。誰かが私に少し助けを与えることができますか?

5
David Hall

文字列が可変長である可能性があると仮定すると、式でREVERSE()または多くの厄介なLEN()値を使用する必要があります。

declare @txt varchar(100) = '0000050704'

--If using SQL Server, the STUFF() function is your friend
select REVERSE(STUFF(STUFF(REVERSE(@txt), 2, 0, '-'), 5, 0, '-'))

--if not you'll need to concatenate SUBSTRING()s
select REVERSE(SUBSTRING(REVERSE(@txt), 1, 1) + '-' + SUBSTRING(REVERSE(@txt),2, 2) + '-' + SUBSTRING(REVERSE(@txt),4, LEN(@txt)))
7
Jaloopa

この簡単な機能を使用できます。

CREATE FUNCTION [dbo].[SetHyphen] (@S varchar(50)) RETURNS varchar(52)
BEGIN
RETURN STUFF(STUFF(@S,LEN(@S)-2,0,'-'),LEN(@S)+1,0,'-')
END

例えば:

select [dbo].[SetHyphen]('0000050704')
0000050-70-4
1
merrais

SQLサーバーによって異なります。文字列の操作方法に関するドキュメントを確認してください-SUBSTRING関数を想定します。

MS SQL Serverでは、sthを実行できます。このような:

UPDATE YourTableName SET 
    YourFieldName = 
        SUBSTRING(YourFieldName, 1,7) + "-" + 
        SUBSTRING(YourFieldName, 7,2) + "-" +
        SUBSTRING(YourFieldName, 9,1)

これにより、フィールドコンテンツが3つの部分に分割され、セパレータを使用して再構築されます...

クエリを実行する前に、プレーンSELECTとして試して、必要に応じて機能するかどうかを確認することをお勧めします。

SELECT
    SUBSTRING(YourFieldName, 1,7) + "-" + 
    SUBSTRING(YourFieldName, 7,2) + "-" +
    SUBSTRING(YourFieldName, 9,1)
FROM YourTableName

クエリにWHERE条件がないため、テーブルのすべての行に影響することに注意してください。

1
user1608721