If(@USERNAME='rajat')
begin
select * from table
end
else
begin
select * from table1
end
그러나 위의 방법으로 문제가 '='비교하는 경우가 insensitive.I 필요 비교가 대/소문자를 구분하는 방식
If(@USERNAME='rajat')
begin
select * from table
end
else
begin
select * from table1
end
그러나 위의 방법으로 문제가 '='비교하는 경우가 insensitive.I 필요 비교가 대/소문자를 구분하는 방식
SQL Server는 서버, 데이터베이스 및 열 수준에서 대/소문자를 구분합니다. 이 속성은 collation 속성의 일부입니다. 따라서 귀하의 예에서 이러한 설정 중 하나 이상이 대소 문자를 구분하지 않도록 설정되었을 수 있습니다. 이 SQL과 같은
-- Check server collation
SELECT SERVERPROPERTY('COLLATION')
-- Check database collation.
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
-- Check column collation
select table_name, column_name, collation_name
from information_schema.columns
where table_name = @table_name
무언가가 당신을 위해 일 수 있습니다
If (@USERNAME='rajat' COLLATE Latin1_General_CS_AS)
.....
+1 다른 정보없이 작업 코드를 게시하는 대신 대답과 다른 관련 정보에 대한 설명을 실제로 제공합니다. 이것은 Stackoverflow에서 죽어가는 예술로 보입니다. – GarethD
upper() 또는 lower 함수 대신 collate casting을 사용하는 것이 더 효율적입니까? 콜레트는 어떤 문자를 변경하는 데 사용 된 데이터 정렬에 따라 달라질 수 있습니다. –
@MatheseF, 대/소문자 함수는 대소 문자를 구분합니다. 또한 Collate는 정렬 규칙 및 악센트 민감도를 처리합니다. 나는 어느 것이 더 performant인지 모른다. – RoadWarrior
If(@USERNAME='rajat' COLLATE Latin1_General_CS_AS)
begin
select * from table
end
else
begin
select * from table1
end
대소 문자 구분을 강제하는 또 다른 방법은 convert
/cast
모두 인수하는 것입니다 varbinary
유형 : -
declare @string1 as varchar(50) = 'abc'
declare @string2 as varchar(50) = 'ABC'
if @[email protected]
print 'same'
else
print 'different'
if convert(varbinary(50),@string1)=convert(varbinary(50),@string2)
print 'same'
else
print 'different'
생산 : -
same
different
가능한 [SQL 사례 구분 문자열 비교] (http://stackoverflow.com/questions/3969059/sql-case-sensitive-string-compare) – NickyvV
가능한 복제본. http://stackoverflow.com/questions/3387378/sql-server-queries-case-sensitivity?rq=1 – Tommassiov
대소 문자 구분 기호는 등호와 아무런 관련이 없습니다. 대/소문자 구분은 데이터베이스의 데이터 정렬에 의해 결정됩니다. –