1. SQL / Говнокод #15521

    −115

    1. 1
    SELECT `1`,`4` FROM `kada-region` WHERE `2` = "SAV" ORDER BY `7`

    Комментариев нет. Кроме нескольких, типы столбцов int. Догадайся что есть что.

    Запостил: Nerfair, 18 Марта 2014

    Комментарии (16) RSS

    • Такое даже не выполнится. Не придумывай.
      Ответить
      • Бегом читать доки по MySQL. `1` ... `7` - абсолютно корректные имена полей.
        Ответить
        • Вы несказанно умны, сэр, но как быть с FROM `kada-region` , врядли стандарт разрешает такое ;)
          Ответить
          • А в чем проблема? Там в волосатых кавычках, емнип, любую херню писать можно, даже пробелы, запятые и точки.

            > врядли стандарт разрешает такое
            mysql всегда забивал на стандарт. Например, на искоробочных настройках, || работает как or, а в select'ах допустимы поля, которых нет ни в group by ни в агрегатных функциях (выбирает значение какой-то записи в группе)...
            Ответить
            • >mysql всегда забивал на стандарт

              Странно что не продукт MS
              Ответить
              • MS SQL свой t-sql унаследовал из Sybase ASE. остальное - пришитые сбоку плюшки и фичи.
                Ответить
              • Почто тrавите?
                Ответить
          • А причем здесь стандарт? Вот я сейчас в MySQL создал таблицу с именем `это&всё*ещё(допустимое)имя-таблицы` - всё прекрасно работает.
            Ответить
            • Пробелы забыл. Их тоже можно. И, скорее всего, даже китайские и японские иероглифы проканают, если кодировка utf-8.
              Ответить
    • фу мерзость какая
      и повсеместное экранирование, и факт того, что конкретно тут без него даже никак
      Ответить
      • Ну с цифровыми именами - всяко никак. А в остальном, если не называть поля from, select и т.п. - можно жить без экранировок.
        Ответить
        • но не живут же
          им, вестимо, где то в гайдлайнах в голову вбили, что экранирование и только экранирование

          раз уж твои задачи требуют инструментов шире, чем орм, что приходится sql писать голыми руками, так будь добр, освой уже нюансы своей субд, чтобы не плодить говносущности с плохими именами

          тем паче, что сама орм их создает максимально конформными, а хорошая - позволяет даже указать отдельное имя

          я как раз дохера пишу sql руками, и что то ни разу не захотелось отэкранировать
          Ответить
          • > освой нюансы своей субд
            Да даже если их не освоить, то совпадения с ключевыми словами забреются еще при создании таблицы, если их там сдуру не заэкранировать...

            Поэтому проблема с экранировкой в select'ах по большей части вызвана... экранировкой в DDL. Очередное горе от ума ;)
            Ответить
      • Если имя - нормальный идентификатор (латинские буквы, цифры, подчеркивания, не начинается с цифры), не являющийся зарезервированным словом, то экранирование не требуется.
        Ответить

    Добавить комментарий