[SQL] 무엇 T-SQL 문에서 접두사 N의 의미는 무엇이고 언제 사용해야합니까?
SQL무엇 T-SQL 문에서 접두사 N의 의미는 무엇이고 언제 사용해야합니까?
좀 삽입 T-SQL 쿼리에 접두사 N을 보았다. 많은 사람들이 테이블에 값을 삽입하기 전에 N을 사용했다.
나는 검색,하지만 난 테이블에 모든 문자열을 삽입하기 전에 N 등의 목적이 무엇인지 이해할 수 없습니다.
INSERT INTO Personnel.Employees
VALUES(N'29730', N'Philippe', N'Horsford', 20.05, 1),
어떤 목적이 'N'접두사 봉사 않으며, 때 사용되어야 하는가?
해결법
-
==============================
1.그것은 VARCHAR보다는, nvarchar 데이터 형식으로 문자열을 선언하는 것
그것은 VARCHAR보다는, nvarchar 데이터 형식으로 문자열을 선언하는 것
Microsoft에서 인용 :
이 두 데이터 유형의 차이를 알고 싶다면,이 SO 게시물을 참조 :
VARCHAR 및 NVARCHAR의 차이점은 무엇입니까?
-
==============================
2.내가 당신에게 N '접두사로 일어난 성가신 일을 말해 보자 - 나는 이틀 동안 문제를 해결할 수 없습니다.
내가 당신에게 N '접두사로 일어난 성가신 일을 말해 보자 - 나는 이틀 동안 문제를 해결할 수 없습니다.
내 데이터베이스 데이터 정렬은 SQL_Latin1_General_CP1_CI_AS 데이터입니다.
그것은 MyCol1라는 열이있는 테이블이 있습니다. 그것은 NVARCHAR입니다
이 쿼리는 존재 정확한 값과 일치하는 데 실패합니다.
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = 'ESKİ' // 0 result
수정을 'N 프리픽스를 사용하여
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = N'ESKİ' // 1 result - found!!!!
왜? latin1_general가 않기 때문에 내가 가정에 실패 왜 큰 점 İ이 없습니다.
-
==============================
3.1. 성능 :
1. 성능 :
절은 다음과 같이이다 당신의 가정 :
WHERE NAME='JON'
NAME 열이 NVARCHAR 또는 NCHAR 이외의 다른 유형 인 경우에, 당신은 N 접두사를 지정하지 않아야합니다. 이름 열 유형 NVARCHAR 또는 NCHAR 인 경우 그러나, 당신은 'JON은'비 유니 코드로 처리되면, N 접두사를 지정하지 않은 경우. 이 수단 NAME 열 및 문자열 'JON'의 데이터 형식이 다릅니다 및 SQL Server 그래서 암시 적으로 다른 하나의 피연산자의 형식을 변환합니다. 는 SQL Server는 문자의 형식을 변환하는 경우 컬럼의 유형에 다음이 더 문제가 없지만, 그것이 않는 경우 컬럼의 인덱스 (있는 경우)를 사용할 수 실 거예요 때문에 성능 다음 다른 방법은 다칠 것입니다.
2. 문자 세트 :
열이 형 NVARCHAR 또는 NCHAR의 경우 WHERE 기준 / UPDATE / INSERT 절에 문자열을 지정하면서, 다음 항상 접두사 N을 사용합니다. (- 예 - 국제 문자와 같은)이 작업을 수행하지 않고 당신의 문자열에있는 문자 중 하나는 유니 코드 인 경우는 실패하거나 데이터 손상을 겪게됩니다.
-
==============================
4.값을 가정하면 아니라 우리는 ''N을 사용하고 있는지에 대한 NVARCHAR 유형입니다
값을 가정하면 아니라 우리는 ''N을 사용하고 있는지에 대한 NVARCHAR 유형입니다
from https://stackoverflow.com/questions/10025032/what-is-the-meaning-of-the-prefix-n-in-t-sql-statements-and-when-should-i-use-it by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 최대 절전 모드는 실제 SQL을 보여 [중복] (0) | 2020.03.10 |
---|---|
[SQL] SQL 서버 : 행에 열 (0) | 2020.03.10 |
[SQL] 어떻게 SQL 서버에서 중복 행을 삭제하려면? (0) | 2020.03.09 |
[SQL] 어떻게 Access에서 서로 다른 상황에서 VBA에서 매개 변수를 사용합니까? (0) | 2020.03.09 |
[SQL] MySQL은 : ORDER BY RAND 대안 () (0) | 2020.03.09 |