2011-08-12 22 views
35

SQL Serverのフィールドvarcharまたはcharで許可されているすべての「特殊な」文字はどこで確認できますか?SQL Serverのvarcharフィールドにはどのような「特殊な」文字を使用できますか?

+4

どういう意味ですか? –

+0

Excelでクエリ結果セットをエクスポートし、srepreadsheetにある行区切りがある場合、これらの原因となる新しい行のような特殊文字がいくつかあります。 –

+0

改行は特に特殊文字ではありません... –

答えて

32

おそらく文字セットASCIIEXTENDED ASCIIが必要です。私が知る限り、これらのどれかはchar/varcharフィールドで許可されています。

nchar/nvarcharを使用している場合、それは世界で設定されているすべてのユニコードの文字です。コメントに基づいて

enter image description here

enter image description here

+0

コピー権情報を保存するためにどのデータ型が再構成されますか?例えば、 。 "©my company 2014" – Hitesh

+0

古すぎるスレッドにコメントしていますが、このデータを保存できません - "Bănărescu"はnvarchar/varchar/textフィールドにあります。何か案が? – Nitesh

+0

@Niteshはもっと情報を必要としています - 何のエラーが出ていますか? – JNK

13

EDIT

あなたが結果セットに改行を持っており、それらを削除したい場合は、クエリをこのように作る:

SELECT 
    REPLACE(REPLACE(YourColumn1,CHAR(13),' '),CHAR(10),' ') 
    ,REPLACE(REPLACE(YourColumn2,CHAR(13),' '),CHAR(10),' ') 
    ,REPLACE(REPLACE(YourColumn3,CHAR(13),' '),CHAR(10),' ') 
    --^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    --only add the above code to strings that are having line breaks, not to numbers or dates 
    FROM YourTable... 
    WHERE ... 

これは、すべての改行をスペース文字で置き換えますエル。これは、すべての文字は、charに許可 "を取得" する

ラン()とvarchar():

;WITH AllNumbers AS 
(
    SELECT 1 AS Number 
    UNION ALL 
    SELECT Number+1 
     FROM AllNumbers 
     WHERE Number+1<256 
) 
SELECT Number AS ASCII_Value,CHAR(Number) AS ASCII_Char FROM AllNumbers 
OPTION (MAXRECURSION 256) 

OUTPUT:

ASCII_Value ASCII_Char 
----------- ---------- 
1   
2   
3   
4   
5   
6   
7   
8   
9    
10   

11   
12   
13   

14   
15   
16   
17   
18   
19   
20   
21   
22   
23   
24   
25   
26   
27   
28   
29   
30   
31   
32   
33   ! 
34   " 
35   # 
36   $ 
37   % 
38   & 
39   ' 
40   (
41   ) 
42   * 
43   + 
44   , 
45   - 
46   . 
47  /
48   0 
49   1 
50   2 
51   3 
52   4 
53   5 
54   6 
55   7 
56   8 
57   9 
58   : 
59   ; 
60   < 
61   = 
62   > 
63   ? 
64   @ 
65   A 
66   B 
67   C 
68   D 
69   E 
70   F 
71   G 
72   H 
73   I 
74   J 
75   K 
76   L 
77   M 
78   N 
79   O 
80   P 
81   Q 
82   R 
83   S 
84   T 
85   U 
86   V 
87   W 
88   X 
89   Y 
90   Z 
91   [ 
92   \ 
93   ] 
94  ^
95   _ 
96   ` 
97   a 
98   b 
99   c 
100   d 
101   e 
102   f 
103   g 
104   h 
105   i 
106   j 
107   k 
108   l 
109   m 
110   n 
111   o 
112   p 
113   q 
114   r 
115   s 
116   t 
117   u 
118   v 
119   w 
120   x 
121   y 
122   z 
123   { 
124   | 
125   } 
126   ~ 
127   
128   € 
129   
130   ‚ 
131   ƒ 
132   „ 
133   … 
134   † 
135   ‡ 
136   ˆ 
137   ‰ 
138   Š 
139   ‹ 
140   Π
141   
142   Ž 
143   
144   
145   ‘ 
146   ’ 
147   “ 
148   ” 
149   • 
150   – 
151   — 
152   ˜ 
153   ™ 
154   š 
155   › 
156   œ 
157   
158   ž 
159   Ÿ 
160     
161   ¡ 
162   ¢ 
163   £ 
164   ¤ 
165   ¥ 
166   ¦ 
167   § 
168   ¨ 
169   © 
170   ª 
171   « 
172   ¬ 
173   ­ 
174   ® 
175   ¯ 
176   ° 
177   ± 
178   ² 
179   ³ 
180   ´ 
181   µ 
182   ¶ 
183   · 
184   ¸ 
185   ¹ 
186   º 
187   » 
188   ¼ 
189   ½ 
190   ¾ 
191   ¿ 
192   À 
193   Á 
194   Â 
195   Ã 
196   Ä 
197   Å 
198   Æ 
199   Ç 
200   È 
201   É 
202   Ê 
203   Ë 
204   Ì 
205   Í 
206   Î 
207   Ï 
208   Ð 
209   Ñ 
210   Ò 
211   Ó 
212   Ô 
213   Õ 
214   Ö 
215   × 
216   Ø 
217   Ù 
218   Ú 
219   Û 
220   Ü 
221   Ý 
222   Þ 
223   ß 
224   à 
225   á 
226   â 
227   ã 
228   ä 
229   å 
230   æ 
231   ç 
232   è 
233   é 
234   ê 
235   ë 
236   ì 
237   í 
238   î 
239   ï 
240   ð 
241   ñ 
242   ò 
243   ó 
244   ô 
245   õ 
246   ö 
247   ÷ 
248   ø 
249   ù 
250   ú 
251   û 
252   ü 
253   ý 
254   þ 
255   ÿ 

(255 row(s) affected) 
+0

CTE +1をクールにする! – ConstantineK

1

私は特殊文字は#だけ@だと思います。 ..クエリは両方を一覧表示します。

DECLARE @str VARCHAR(50) 
SET @str = '[azAB09ram#[email protected]' + CHAR(5) + 'a~b$' 
SELECT DISTINCT poschar 
FROM MASTER..spt_values S 
     CROSS APPLY (SELECT SUBSTRING(@str,NUMBER,1) AS poschar) t 
WHERE NUMBER > 0 
     AND NUMBER <= LEN(@str) 
     AND NOT (ASCII(t.poschar) BETWEEN 65 AND 90 
       OR ASCII(t.poschar) BETWEEN 97 AND 122 
       OR ASCII(t.poschar) BETWEEN 48 AND 57) 
2

varchar又はchar列に格納することができる特定の文字列照合に依存します。様々な異なる照合に対してこれらを表示するスクリプトについては、my answer hereを参照してください。

特定のASCII範囲外のすべての文字を検索する場合はsee my answer hereです。

関連する問題