2011-08-12 3 views
35

SQL 서버의 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

편집 :

사용자가 설정하여 결과에 줄 바꿈을 가지고 쿼리 수 있도록,이 방법으로 제거하려면 다음

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 ... 

이렇게하면 모든 줄 바꿈이 공백 문자로 바뀝니다. 어. 이 모든 문자는 문자 허용 "수"로

실행()와 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) 

출력 :

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.

관련 문제