2017-05-08 10 views

答えて

0

CASE発現およびLEFTRIGHT文字列関数の組み合わせを使用して、ちょうど別の視点。

クエリ

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; 

Find a demo here

1

を使用できRIGHTLEFTこのように:

Update myTable set myField = RIGHT(myField,LEN(myField)-1) WHERE myField LIKE '#%'; 
Update myTable set myField = LEFT(myField,LEN(myField)-1) WHERE myField LIKE '%#'; 

この値が又は#シンボルで終わるを開始しても、それが除去されることを保証します。これは、最も効率的な方法ではないかもしれないが、あなたは簡単に十分な機能でそれを置くことができ

0

基本的に、あなたは文字列の最初の文字をテストし、それが#記号だ場合、それを削除します。その後、最後の文字と同じことをします。

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 
関連する問題