2016-11-24 60 views
0

我有「模板」表:如何檢測列NVARCHAR是否包含拉丁文或cyrilic字符

CREATE TABLE Template (
    ID BIGINT, -- PK 
    NAME NVARCHAR(255) 
) 

NAME包含俄語或英語文本。如何將此列的值移至RUSSIAN_NAMEENGLISH_NAME列取決於值名稱列值。

CREATE TABLE Template (
    ID BIGINT, -- PK 
    RUSSIAN_NAME NVARCHAR(255), 
    ENGLISH_NAME NVARCHAR(255) 
) 
+3

的可能的複製[如何找到西里爾字體(俄語字符)?](http://stackoverflow.com/question S/31606271 /如何找到的 - 西里爾 - 字體俄語字符) – Tanner

回答

2

試試這個:

我不知道俄文本的意義,從什麼地方

DECLARE @tbl TABLE (name NVARCHAR(255),plainLatin NVARCHAR(255),foreignChars NVARCHAR(100)); 
INSERT INTO @tbl(name) VALUES 
(N'abcd'),(N'слов в тексте'),(N'one more'),(N'с пробелами и без них'); 

UPDATE @tbl 
SET plainLatin=CASE WHEN PATINDEX('%[^-a-zA-Z0-9 ]%' /*add signs you want to allow*/,name)=0 THEN name END 
    ,foreignChars=CASE WHEN PATINDEX('%[^-a-zA-Z0-9 ]%' /*add signs you want to allow*/,name)>0 THEN name END 

SELECT * FROM @tbl 

結果只是複製

+-----------------------+------------+-----------------------+ 
| name     | plainLatin | foreignChars   | 
+-----------------------+------------+-----------------------+ 
| abcd     | abcd  | NULL     | 
+-----------------------+------------+-----------------------+ 
| слов в тексте   | NULL  | слов в тексте   | 
+-----------------------+------------+-----------------------+ 
| one more    | one more | NULL     | 
+-----------------------+------------+-----------------------+ 
| с пробелами и без них | NULL  | с пробелами и без них | 
+-----------------------+------------+-----------------------+ 
相關問題