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 回答