Два улыбающихся солнца равняются одному улыбающемуся солнцу? - PullRequest
5 голосов
/ 15 мая 2019

Как SQL Server определяет, совпадают ли два идентификатора? Независимо от того, в каком порядке я расположил следующие операторы, SQL Server с радостью создаст первое, а затем откажется создавать любые другие, говоря, что они уже существуют.

create database [?]
go
create database [??]
go
create database [ ? ? ]
go
create database [???]
go
create database [??]
go
create database [?]
go
create database [??]
go

1 Ответ

8 голосов
/ 15 мая 2019

Как SQL Server определяет, совпадают ли два идентификатора?

Имена баз данных сравниваются с использованием Server Collation .Внутри базы данных идентификаторы для таблиц и имен других объектов сравниваются с использованием сортировки базы данных.

Параметры сортировки сервера указываются при установке SQL Server.Параметры сортировки на уровне сервера по умолчанию: SQL_Latin1_General_CP1_CI_AS.

Для любых двух символов параметры сортировки определяют, какой из них больше или считаются ли они равными.Так что ?> ?, ? <? или ? = ?? </p>

select 'match'
where N' ? ? ' = N'???' collate SQL_Latin1_General_CP1_CI_AS

Совпадения, но

select 'match'
where N' ? ? ' = N'???' collate Latin1_General_Bin 

нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...