SQL:如何在不使用反向函数的情况下检查字符串的回文?

时间:2017-11-21 11:39:40

标签: sql sql-server

我正在使用SQL Server,我想检查给定字符串是否是回文 - 但不使用reverse函数。

3 个答案:

答案 0 :(得分:4)

有多种方法可以实现这一目标。其中之一是检查第一个和最后一个字符,如果它们相等则将它们切片并继续循环。

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')

答案 1 :(得分:2)

没有循环的选择

"assets": ["0901d196804adc1c"]

答案 2 :(得分:1)

以下是使用LEFTRIGHT的示例。我使用@count变量来改变位置,然后抓住最左边和最右边的char:

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]