Извлекайте данные с определенного языка из SQL - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть столбец, содержащий данные двух языков (арабский и английский) , и я хочу получить их отдельно, указав тип его уни-кода или язык .

Использую MS SSMS 2012

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Добавление нового столбца для языка выглядит лучше, но вы можете использовать регулярное выражение в выражении 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 .]%'

0 голосов
/ 14 февраля 2019

Если ваш столбец равен NVARCHAR, поскольку у вас есть символы Юникода, вы можете отличить Юникод от не-Юникода, сравнивая его преобразование с 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 значение Юникода.

Я предлагаю вам сохранить правильный языковой тег каждого текста в другом столбце, чтобы у вас не былоделать эту проверку каждый раз (это тяжелый процесс).

Обратите внимание, что это решение не будет полностью отличать английский от арабского, как указано в комментариях ниже.

...