从SQL使用特定语言检索数据

时间:2019-02-14 09:00:30

标签: sql sql-server tsql sql-server-2012

我有一列,其中包含两种语言的数据(阿拉伯语和英语),我想通过识别其 uni-code或语言的类型来分别检索它们>。

我正在使用 MS SSMS 2012

2 个答案:

答案 0 :(得分:0)

假设您的列为NVARCHAR,因为您具有unicode字符,则区分unicode和非unicode的方法是将其转换与VARCHAR进行比较。无法作为CHAR使用的任何字符都将是?,然后相等将失败。

SELECT
    T.TextColumn,
    IsUnicode = CASE 
        WHEN CONVERT(VARCHAR(100), T.TextColumn) <> CONVERT(NVARCHAR(100), T.TextColumn) THEN 1
        ELSE 0 END
FROM
    YourTable AS T

您可以随意更改比较的长度(此示例适用于100),只需确保获取足够数量的字符,以便从阿拉伯文本中获取至少1个unicode值。 / p>

我建议您将每个文本的正确语言标签存储在另一列中,这样就不必每次都进行此检查(这是一个繁琐的过程)。

请注意,此解决方案 不会完全区分 英语和阿拉伯语,如下所述。

答案 1 :(得分:0)

为语言添加新列似乎是处理该问题的更好方法,但是您可以在where子句中使用“ like”正则表达式来区分阿拉伯语和英语(如果没有其他选择)。

--to get Arabic names for product
select * from Product where [name] not LIKE  '%[a-z0-9 .]%'

--to English names for product
select * from Product where [name] LIKE  '%[a-z0-9 .]%'