2017-11-21 5 views

答えて

3

これを達成する方法は複数あります。そのうちの1つは、最初と最後の文字をチェックし、等しい場合はスライスし、ループで処理を続行することです。ループ

DECLARE @Test VARCHAR(100) 

SELECT @Test = 'qwerewq' 


SELECT CASE WHEN LEFT(@Test, LEN(@Test)/2) = 
    (
    SELECT '' + SUBSTRING(RIGHT(@Test, LEN(@Test)/2), number, 1) 
    FROM master.dbo.spt_values 
    WHERE type='P' AND number BETWEEN 1 AND LEN(@Test)/2 
    ORDER BY number DESC 
    FOR XML PATH('') 
    ) 
THEN 1 
ELSE 0 
END 
2

選択ここでLEFTRIGHTを使用した例です。 @count変数を使って位置を変更し、一番左と右端の文字をつかみます:

DECLARE @mystring varchar(100) = 'redivider' 
DECLARE @count int = 1 

WHILE (@count < LEN(@mystring)/2) AND @count <> 0 
BEGIN 
    IF (RIGHT(LEFT(@mystring, @count), 1) <> LEFT(RIGHT(@mystring, @count), 1)) 
    SET @count = 0 
    ELSE SET @count += 1 
END 

SELECT CASE WHEN @count = 0 
      THEN 'Not a Palindrome' 
      ELSE 'Palindrome' 
     END [Result] 
1

なし

DECLARE @string NVARCHAR(100) 
DECLARE @counter INT 

SET @string = 'Your string' 
SET @counter = LEN(@string)/2 

WHILE (@counter > 0) 
    BEGIN 
    IF LEFT(@string,1) = RIGHT(@string,1) 
     BEGIN 
     SET @string = SUBSTRING(@string,2,len(@string)-2) 
     SET @counter = @counter - 1 
     END 
    ELSE 
     BEGIN 
     PRINT ('Given string is not a Palindrome') 
     BREAK 
     END 
    END 
IF(@counter = 0) 
    PRINT ('Given string is a Palindrome') 
関連する問題