1

文字列がアラビア語であるか、言語 ID 列を英語またはアラビア語として更新する必要があるかどうかを確認するにはどうすればよいですか

 IF(PATINDEX('%[^أ-ي]%', RTRIM(@STRING))=0)
        BEGIN
              SET @RETURNVALUE='A'
        END
 ELSE IF(PATINDEX('%[^A-Za-z]%', RTRIM(@STRING))=0)
        BEGIN
              SET @RETURNVALUE='E'
        END

名前が S で始まり、アラビア語の名前が続くと仮定すると、null がスローされていました

元:set @STRING= N'العربيةs'

この問題を解決するのを手伝ってください。

4

1 に答える 1

4

効果的に使用する IF ステートメントは、次のように述べています。

文字列に非アラビア文字が含まれていない場合は、結果を「A」に設定します

それ以外の場合、文字列に非ラテン文字が含まれていない場合は、結果を「E」に設定します

アラビア語とラテン語の両方のスクリプトを含む文字列がある場合、結果の値は設定されません。

次のように、正規表現の否定を削除します。

declare @string nvarchar(50), @returnvalue varchar (50)

set @string = N'العربيةs'
set @returnvalue = ''

IF(PATINDEX(N'%[أ-ي]%', RTRIM(@string ))>0)
    BEGIN
      SET @returnvalue= @returnvalue + 'A'
    END
IF(PATINDEX(N'%[A-Za-z]%', RTRIM(@string ))>0)
    BEGIN
      SET @returnvalue= @returnvalue + 'E'
    END

 select @string, @returnvalue

戻り値

العربيةs    AE

最初のコメントの後に更新

IF(PATINDEX(N'%[أ-ي]%', RTRIM(@string ))>0)
    BEGIN
      SET @returnvalue= 'A'
    END
ELSE IF(PATINDEX(N'%[A-Za-z]%', RTRIM(@string ))>0)
    BEGIN
      SET @returnvalue= 'E'
    END

RETURN @returnvalue
于 2012-04-04T16:03:19.133 に答える