Telephone
現在、次のようなエントリを持つテーブルがあります。
9073456789101
+773456789101
0773456789101
私がやりたいのは、そこに 9 があるすべてのエントリの先頭から 9 だけを削除し、他のエントリはそのままにしておくことです。
どんな助けでも大歓迎です。
Telephone
現在、次のようなエントリを持つテーブルがあります。
9073456789101
+773456789101
0773456789101
私がやりたいのは、そこに 9 があるすべてのエントリの先頭から 9 だけを削除し、他のエントリはそのままにしておくことです。
どんな助けでも大歓迎です。
私は最近、RIGHT()、LEN()、PATINDEX() の組み合わせで同様の問題を解決しました。PATINDEX は、最初の文字が 9 の場合は整数 1 を返し、それ以外の場合は 0 を返します。このメソッドを使用すると、CASE WHEN ステートメントを使用せずにすべてのレコードを一度に返すことができます。
SELECT
RIGHT(number, LEN(number) - PATINDEX('9%', number))
FROM Telephone
スタッフはこれに最適な機能です。ただし、where 句を含む update ステートメントで使用するのは素晴らしいことですが、挿入を行っていて、1 回のパスですべての行を挿入する必要がある場合はどうでしょうか。以下は、最初の文字がピリオドの場合は削除し、遅い case ステートメントを使用せず、null を空の文字列に変換します。
DECLARE @Attachment varchar(6) = '.GIF',
@Attachment2 varchar(6)
SELECT
@Attachment2 = ISNULL(ISNULL(NULLIF(LEFT(@Attachment, 1), '.'), '') + STUFF(@Attachment, 1, 1, ''), '')
SELECT
@Attachment2
DECLARE @STR nvarchar(200) = 'TEST'
SET @STR = STUFF(@STR,1,1,'')
PRINT @STR
結果は「EST」になります