collation 수정
카테고리 없음 / 2024. 9. 11. 07:58
unique index를 string에 주고 싶다.
그럼 code table에 허용하는 범위가 아니므로 collation을 지원하는 collation으로 바꾸어 준다.
쉽게 이야기 하면 a 와 A 를 구분 못하는 korean_wansung_ci_as와 같은 이슈이다.
DROP TABLE IF EXISTS dbo.unicode_string_test
CREATE TABLE dbo.unicode_string_test (
string NVARCHAR(10)
)
-- 1 : U+0031
-- 2 : U+0032
-- ー : U+30FC
-- ヽ : U+30FD
INSERT dbo.unicode_string_test SELECT N'111'
INSERT dbo.unicode_string_test SELECT N'11ー'
INSERT dbo.unicode_string_test SELECT N'11ヽ'
INSERT dbo.unicode_string_test SELECT N'1ーー'
INSERT dbo.unicode_string_test SELECT N'1ヽヽ'
INSERT dbo.unicode_string_test SELECT N'ーーー'
INSERT dbo.unicode_string_test SELECT N'222'
INSERT dbo.unicode_string_test SELECT N'22ー'
INSERT dbo.unicode_string_test SELECT N'22ヽ'
INSERT dbo.unicode_string_test SELECT N'2ーー'
INSERT dbo.unicode_string_test SELECT N'2ヽヽ'
INSERT dbo.unicode_string_test SELECT N'ヽヽヽ'
SELECT * FROM dbo.unicode_string_test WHERE string = N'111'
SELECT * FROM dbo.unicode_string_test WHERE string = N'11ー'
SELECT * FROM dbo.unicode_string_test WHERE string = N'1ーー'
SELECT * FROM dbo.unicode_string_test WHERE string = N'1ーヽ'
SELECT * FROM dbo.unicode_string_test WHERE string = N'ーーー'
SELECT * FROM dbo.unicode_string_test WHERE string = N'222'
SELECT * FROM dbo.unicode_string_test WHERE string = N'22ヽ'
SELECT * FROM dbo.unicode_string_test WHERE string = N'2ヽヽ'
SELECT * FROM dbo.unicode_string_test WHERE string = N'2ーヽ'
SELECT * FROM dbo.unicode_string_test WHERE string = N'ヽヽヽ'
go
alter table unicode_string_test
alter column string NVARCHAR(10) COLLATE Korean_Wansung_BIN2
go
create unique nonclustered index nc_unicode_string_test on unicode_string_test (string)
go
select * from dbo.unicode_string_test where string = N'111'
go
SELECT name, description FROM sys.fn_helpcollations() where name like '%korea%'
SELECT * FROM dbo.unicode_string_test where string = N'111' collate Korean_Wansung_BIN2
go
SERVER
<powershell 을 관리자모드로 시작>
PS> cd "C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019"
PS> .\Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=USERDOMAIN\userAccount /SAPWD=!1P@ssw0rd /SQLCOLLATION=SQL_Latin1_General_CP1_CI_AS
DATABASE or TABLE