文字列に特定の文字(#
)が含まれていれば、最初と最後の文字を削除してください。そうでなければ削除しないでください。SQL Serverに特定の文字がある場合、最初と最後の文字を削除しますか?
入力1:#Test#SQL#
所望の出力:Test#SQL
入力2:Test#SQL
所望の出力:Test#SQL
は、事前にありがとう
文字列に特定の文字(#
)が含まれていれば、最初と最後の文字を削除してください。そうでなければ削除しないでください。SQL Serverに特定の文字がある場合、最初と最後の文字を削除しますか?
入力1:#Test#SQL#
所望の出力:Test#SQL
入力2:Test#SQL
所望の出力:Test#SQL
は、事前にありがとう
CASE
発現およびLEFT
とRIGHT
文字列関数の組み合わせを使用して、ちょうど別の視点。
クエリ
select case when left(@str, 1) = '#' and right(@str, 1) = '#'
then left((right(@str, len(@str) - 1)), len((right(@str, len(@str) - 1))) - 1)
when left(@str, 1) = '#' and right(@str, 1) <> '#'
then right(@str, len(@str) - 1)
when left(@str, 1) <> '#' and right(@str, 1) = '#'
then left(@str, len(@str) - 1)
else @str end as str;
を使用できRIGHT
とLEFT
このように:
Update myTable set myField = RIGHT(myField,LEN(myField)-1) WHERE myField LIKE '#%';
Update myTable set myField = LEFT(myField,LEN(myField)-1) WHERE myField LIKE '%#';
この値が又は#
シンボルで終わるを開始しても、それが除去されることを保証します。これは、最も効率的な方法ではないかもしれないが、あなたは簡単に十分な機能でそれを置くことができ
:
基本的に、あなたは文字列の最初の文字をテストし、それが#記号だ場合、それを削除します。その後、最後の文字と同じことをします。
DECLARE @A VARCHAR(25)
SET @A = '#Test#SQL#'
SET @A = CASE
WHEN SUBSTRING(@A, 1, 1) = '#'
THEN SUBSTRING(@A, 2, LEN(@A))
ELSE @A
END
SET @A = CASE
WHEN SUBSTRING(@A, LEN(@A) , 1) = '#'
THEN SUBSTRING(@A, 1, LEN(@A) - 1)
ELSE @A
END
SELECT @A