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

Откуда: Кишинёв
Сообщений: 6724
А не задолбало ли писать Cast / Convert для приведения типов констант?
SELECT Convert(Bit,1)


Вон в нормальных языках:
  • True/False (ну для Bit надо же что-то: b1/b0)
  • 123L - Long
  • 123M - Currency
  • 0xFF - Binary
  • {ts 'YYYY-MM-DD hh:mm:ss'} - DateTime

    Bit меня больше всего напрягает. Ещё и тем что типо у бита нет понятия Min/Max, бред.
    Префикс думаю удобно и не сильно разнится с имеющимся.
  • 26 апр 12, 12:18    [12473421]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    kDnZP
    Member [заблокирован]

    Откуда: ★[msg=16399436]★[msg=20850760]
    Сообщений: 11289
    Mnior, а че?
    SELECT 1L,123M
    

    Работает аж набегом.

    По теме - имхо CAST/CONVERT есть, ну и ладно. Остальное дело техники.
    26 апр 12, 12:21    [12473442]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    kDnZP
    По теме - имхо CAST/CONVERT есть, ну и ладно. Остальное дело техники.
    Ага, так и рябит килотонны этих cast-ов в коде.
    Не, ну я конечно понимаю чукчей-императивистов, что 10К строк кода, что 11К - разницы не видно, тем более если никто этот код не читает.
    Согласен, что не в каждом запросе это есть, но иногда этого очень много и побесивает.
    26 апр 12, 13:13    [12473838]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9836
    Mnior,

    С точки зрения маркетинга -- бесперспективно...
    26 апр 12, 13:33    [12474003]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    Хорошо хоть букву N придумали
    26 апр 12, 13:37    [12474036]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    kDnZP
    Member [заблокирован]

    Откуда: ★[msg=16399436]★[msg=20850760]
    Сообщений: 11289
    iap
    Хорошо хоть букву N придумали

    Значит надобно дополнить:
    SELECT 1L,123M,0xffw,N'abc'd
    
    26 апр 12, 13:53    [12474149]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Deff
    Member

    Откуда: Пермь
    Сообщений: 18328
    Сделали бы хотя бы вот такой синтаксис:

    SELECT bit(1), bigint(45), tinyint(12)


    Было бы на порядок удобней, чем Cast / Convert
    26 апр 12, 14:01    [12474205]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    kDnZP
    iap
    Хорошо хоть букву N придумали

    Значит надобно дополнить:
    SELECT 1L,123M,0xffw,N'abc'd
    
    Конфликтует же с синтаксисом алиасов!
    Так что префиксы и только префиксы!
    26 апр 12, 14:04    [12474230]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    ZOOKABAKODER
    Member

    Откуда:
    Сообщений: 178
    Deff
    Сделали бы хотя бы вот такой синтаксис:

    SELECT bit(1), bigint(45), tinyint(12)


    Было бы на порядок удобней, чем Cast / Convert


    create function dbo.AsBit( @v as bigint) returns bit as begin return cast(@v as bit) end;
    

    Подойдёт?
    26 апр 12, 15:31    [12474866]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    ZOOKABAKODER
    Deff
    Сделали бы хотя бы вот такой синтаксис:

    SELECT bit(1), bigint(45), tinyint(12)


    Было бы на порядок удобней, чем Cast / Convert


    create function dbo.AsBit( @v as bigint) returns bit as begin return cast(@v as bit) end;
    

    Подойдёт?
    Не, это слишком коротко!
    Особенно если с CASTом сравнить.
    26 апр 12, 15:34    [12474896]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    invm
    С точки зрения маркетинга -- бесперспективно...
    О боже, где моя бутылка водки ...
    Deff
    Сделали бы хотя бы вот такой синтаксис:
    SELECT bit(1), bigint(45), tinyint(12)
    
    Всё равно много, да и скобки ребят.
    iap
    Так что префиксы и только префиксы!
    А как?
    SELECT D'2012-04-26', T'15:41', TS'2012-04-26 15:41' -- Со временем и ODBC можно
    	, bx1	-- А может это колонка
    
    26 апр 12, 15:41    [12474949]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    iap, или вы хотите всё псевдо-строками?:
    SELECT B'1', L'12345678', S'12345', T'123' -- Чёрт, T же не за Tiny, а уже за Time "закреплено"
    
    26 апр 12, 15:46    [12474994]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    Mnior
    iap, или вы хотите всё псевдо-строками?:
    SELECT B'1', L'12345678', S'12345', T'123' -- Чёрт, T же не за Tiny, а уже за Time "закреплено"
    
    Да... Тут Microsoftу думать и думать ещё... :))
    26 апр 12, 15:57    [12475062]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    ZOOKABAKODER
    Member

    Откуда:
    Сообщений: 178
    Mnior
    Deff
    Сделали бы хотя бы вот такой синтаксис:
    SELECT bit(1), bigint(45), tinyint(12)
    
    Всё равно много, да и скобки ребят.
    iap
    Так что префиксы и только префиксы!
    А как?
    SELECT D'2012-04-26', T'15:41', TS'2012-04-26 15:41' -- Со временем и ODBC можно
    	, bx1	-- А может это колонка
    

    Ну время-то не строка, оно фиксированного размера, да и кавычки ребят. Тогда уж как-то так:

    20120101D
    130155T
    130155T111
    20120101D130155T111
    или так

    2012.01.01D
    13.01.55.111T
    2012.01.01T13.01.55.111

    2012:01:01D
    13:01:55:111T
    2012:01:01T13:01:55:111

    или вообще так:

    2012:01:01
    2012:01:01.13:01:55:111
    0.13:01:55:111
    26 апр 12, 16:04    [12475132]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    iap
    Да... Тут Microsoftу думать и думать ещё... :))
    У M$ уже не осталось никого кто там думает. Утонули, пропали, разошлись. Надо предлагать, настаивать, требовать.
    В OpenSource ... ну сами понимаете, не халопы.

    ZOOKABAKODER, синтаксиси должен быть однозначным и не пересекаться с имеющимся.
    Да рябит. Хоть и не так сильно. С другой строны константы должны отделатся ... цветом тоже.

    Буква перед строкой очень безобидный и совместымый вариант (обратная совместимость багов это конёк M$).

    Со временем меньше проблем, они и так пишутся (ODBC формат) и обычно сравниваются, а не задаются.
    Краевые варианты не такие длинные: Convert(DateTime,0)
    А вот Bit намного чаще задаётся результат как константа, аналогично с TinyInt и т.п.
    Т.е. чем меньше тип тем более актуально.

    Решать тотально для всех типов не обязательно. А то так 100 лет будем придумывать.
    -------------
    Нужны ещё предложения.
    У кого там опыт по разным специфическим языкам.

    PS: ZOOKABAKODER, варианты не отбрасываются
    26 апр 12, 16:32    [12475374]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Uridian
    Member

    Откуда: Lobnya
    Сообщений: 239
    Оно?
    declare @a bit = 'false'
    select @a
    

    select @@version
    Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
    26 апр 12, 16:43    [12475473]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31983
    iap
    kDnZP
    пропущено...

    Значит надобно дополнить:
    SELECT 1L,123M,0xffw,N'abc'd
    

    Конфликтует же с синтаксисом алиасов!
    Так что префиксы и только префиксы!
    Вообще реально алиасы без пробела не пишут. МС мог бы в следующей версии удалить эту возможность, тогда можно суфиксами типы обозначать.

    Или действительно префиксом перед строкой в кавычках, но как то это для чисел не по людски...
    26 апр 12, 16:53    [12475557]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    kDnZP
    Member [заблокирован]

    Откуда: ★[msg=16399436]★[msg=20850760]
    Сообщений: 11289
    alexeyvg
    Вообще реально алиасы без пробела не пишут. МС мог бы в следующей версии удалить эту возможность, тогда можно суфиксами типы обозначать.

    Работает с 2000 по 2012, скорее всего работает и на версиях менее 2000. И еще более чем вероятно, что будет работать на версиях старше 2012.
    26 апр 12, 16:59    [12475610]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    alexeyvg
    Вообще реально алиасы без пробела не пишут.
    Вообщето это не свойство одних алиасов, а баги особенности синтаксиса.
    SELECT CASE WHEN 1=2THEN 2 END AS[X]
    
    Ха, на форуме то не так подсвечивает.
    26 апр 12, 19:58    [12476397]     Ответить | Цитировать Сообщить модератору
     Re: Типизированные константы  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6724
    Мда. Лень вещь мощная.
    У всего сообщества нет сил придумать оптимальный вариант.
    1. Лень
    2. ну будет иногда профтыкать синтакс при неправильном выборе, ну это не запарно
    3. Да мелочь о чём думать, с виду по вариантам примерно одинаково фигово
    4. Не запарно писать всегда Cast (с миру по нитке)
    3 май 12, 12:28    [12500256]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить