Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тип uniqueidentifier в нижнем регистре  [new]
Jenstel
Member

Откуда:
Сообщений: 22
Доброго времени суток.
Есть ли в MS SQL возможность получать uniqueidentifier в нижнем регистре? Оператор low() влияет на планы и производительность
9 янв 18, 23:17    [21091823]     Ответить | Цитировать Сообщить модератору
 Re: Тип uniqueidentifier в нижнем регистре  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36928
У типа uniqueidentifier нет никаких регистров.
10 янв 18, 00:48    [21091894]     Ответить | Цитировать Сообщить модератору
 Re: Тип uniqueidentifier в нижнем регистре  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
Гавриленко Сергей Алексеевич
У типа uniqueidentifier нет никаких регистров.
Да и с оператором low() у него тоже не сложилось :-)
Jenstel
Есть ли в MS SQL возможность получать uniqueidentifier в нижнем регистре?
uniqueidentifier - это 16 байтный массив, состоит из байтов, то есть чисел в диапазоне 0-255
Как показывать этот uniqueidentifier на экране - дело приложения.
Вы так же можете получать из запросов uniqueidentifier, преобразованный в строку, и, если надо, преобразуйте её в нижний регистр функцией LOWER(), никакой деградации производительности не будет.
10 янв 18, 09:18    [21092203]     Ответить | Цитировать Сообщить модератору
 Re: Тип uniqueidentifier в нижнем регистре  [new]
Jenstel
Member

Откуда:
Сообщений: 22
Вот что дает, например, такой код
Select lower(r.GUID) as GUID

Картинка с другого сайта.

Причем если в тяжелых запросах избавиться от lower(), то время выполнения заметно сокращается.
Например, драйвер, JDBC выводит сразу в нижнем регистре, и мне нужен именно нижний, потому что результаты запросов используются для SOAP-запросов и там регистр уже имеет значение.
10 янв 18, 19:46    [21094696]     Ответить | Цитировать Сообщить модератору
 Re: Тип uniqueidentifier в нижнем регистре  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36928
Jenstel
Вот что дает, например, такой код
Select lower(r.GUID) as GUID


Картинка с другого сайта.

Причем если в тяжелых запросах избавиться от lower(), то время выполнения заметно сокращается.
Например, драйвер, JDBC выводит сразу в нижнем регистре, и мне нужен именно нижний, потому что результаты запросов используются для SOAP-запросов и там регистр уже имеет значение.
Преобразуйте в строку на клиенте. На сервере uniqueidentifier -- это 16 байт или 128 бит, как вам уже объяснили.
10 янв 18, 19:54    [21094723]     Ответить | Цитировать Сообщить модератору
 Re: Тип uniqueidentifier в нижнем регистре  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31339
Jenstel
Причем если в тяжелых запросах избавиться от lower(), то время выполнения заметно сокращается.
Либо разберитесь с планами запросов, либо преобразуйте на клиенте.
Что то мне не верится, что преобразование в выходном рекордсете влияет на план, похоже, вы преобразуете где то внутри запроса.
Покажите запрос целиком, покажите его планы с lower, и без него.
10 янв 18, 22:48    [21095035]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить