вторник, 9 июля 2013 г.

Как управлять чувствительностью к регистру строк в запросах


-- Включаем чувствительность к регистру
-- при помощи правила сопоставления (Collation)
-- Cyrillic_General_CS_AS
-- CS - Case Sensitive - Чувствительный к регистру
SELECT
    ProductID
    , ListPrice
    , Name
    , Color
FROM
    [AdventureWorks2012].[Production].[Product]
WHERE Color = 'red'
    COLLATE Cyrillic_General_CS_AS
    -- CS - Case Sensitive - Чувствительный к регистру
ORDER BY
    ListPrice DESC, Name ASC


SELECT
    ProductID
    , ListPrice
    , Name
    , Color
FROM
    [AdventureWorks2012].[Production].[Product]
WHERE
    Color = 'Red'
         COLLATE Cyrillic_General_CS_AS
    -- CS - Case Sensitive - Чувствительный к регистру

ORDER BY
    ListPrice DESC, Name ASC

-- Отключаем чувствительность к регистру
-- при помощи правила сопоставления (Collation)
-- Cyrillic_General_CS_AS
-- CI - Case Insensitive - НЕчувствительный к регистру

SELECT
    ProductID
    , ListPrice
    , Name
    , Color
FROM
    [AdventureWorks2012].[Production].[Product]
WHERE Color = 'rED'
    COLLATE Cyrillic_General_CI_AS
    -- CI - Case Insensitive - НЕчувствительный к регистру
ORDER BY
    ListPrice DESC, Name ASC

GO
-- Создадим базу данных с правилом сопоставления (Collation)
-- “Cyrillic_General_CS_AS”
-- CS - Case Sensitive - Чувствительный к регистру

CREATE DATABASE TestCollate COLLATE Cyrillic_General_CS_AS
GO

-- Выберем базу данных TestCollate в качестве текущей.
-- Настройки базы данных становятся настройками по умолчанию

USE TestCollate

SELECT
    ProductID
    , ListPrice
    , Name
    , Color
FROM
    [AdventureWorks2012].[Production].[Product]
WHERE Color = 'rED'
ORDER BY
    ListPrice DESC, Name ASC