Как конкатенировать строки с заполнением в sqlite

У меня три столбца в таблице sqlite:

Column1 Column2 Column3 A 1 1 A 1 2 A 12 2 C 13 2 B 11 2 

Мне нужно выбрать Column1-Column2-Column3 (например, A-01-0001 ). Я хочу поместить каждый столбец с помощью -

Я новичок в SQLite, любая помощь будет оценена

|| оператор «concatenate» – он объединяет две строки своих операндов.

С http://www.sqlite.org/lang_expr.html

Для заполнения, казалось бы, мошенник, который я использовал, должен начинаться с вашей целевой строки, например «0000», конкатенировать «0000423», а затем substr (результат, -4, 4) для «0423».

Обновление. Похоже, в SQLite нет встроенной реализации «lpad» или «rpad», но вы можете следовать (в основном, что я предложил) здесь: http://verysimple.com/2010/01/12/sqlite-lpad -rpad-функции /

 -- the statement below is almost the same as -- select lpad(mycolumn,'0',10) from mytable select substr('0000000000' || mycolumn, -10, 10) from mytable -- the statement below is almost the same as -- select rpad(mycolumn,'0',10) from mytable select substr(mycolumn || '0000000000', 1, 10) from mytable 

Вот как это выглядит:

 SELECT col1 || '-' || substr('00'||col2, -2, 2) || '-' || substr('0000'||col3, -4, 4) 

это дает

 "A-01-0001" "A-01-0002" "A-12-0002" "C-13-0002" "B-11-0002" 

SQLite имеет функцию printf которая выполняет именно это:

 SELECT printf('%s-%.2d-%.4d', col1, col2, col3) FROM mytable 

Еще одна строка для ответа @tofutim … если вы хотите указать имя поля для конкатенированной строки …

 SELECT ( col1 || '-' || SUBSTR('00' || col2, -2, 2) | '-' || SUBSTR('0000' || col3, -4, 4) ) AS my_column FROM mytable; 

Протестировано на SQLite 3.8.8.3 , спасибо!

  • Как получить значение переменной, если имя переменной хранится как строка?
  • Удаление конечного символа новой строки из входа fgets ()
  • Самый элегантный способ повторения слов строки
  • Что именно делает метод .join ()?
  • Сравнить String и Object в C #
  • Как извлечь имя файла из пути?
  • Преобразование строки в имя переменной или тип переменной
  • Escape curly brace '{' в String.Format
  • Почему нет replaceAll работать в этой строке кода?
  • Почему sizeof (string) == 32?
  • Как читать строку с клавиатуры с помощью C? получение ошибки сегментации, проходящей в char *
  • Interesting Posts

    Возврат строки из C # DLL с неуправляемым экспортом в скрипт Inno Setup

    Как я могу получать телефонные звонки на сервере Linux и скриптах в зависимости от числа нажатых?

    Каков самый простой способ генерации xml в c ++?

    android.view.InflateException: двоичный файл XML: ошибка раздувания fragmentа classа

    DesignMode с вложенными элементами управления

    В чем разница между двойной антенной и тройной антенной для маршрутизатора?

    Как перенести музыку с моего iPhone на компьютер?

    Как изменить «Открыть с помощью Powershell» на «Открыть с помощью командной строки», когда shift-rightclicking в Explorer?

    Взятие «скриншотов» определенного макета в Android

    Вызов (делегат)

    Настройка JMeter для распределенного тестирования в AWS с проблемами подключения

    В чем разница между связанными типами данных SQLite, такими как INT, INTEGER, SMALLINT и TINYINT?

    В редакторе строк ZSH, как вставить новую строку?

    Как узнать, какой тип объекта Mat связан с Mat :: type () в OpenCV

    Свойства и переменные экземпляра в Objective-C

    Давайте будем гением компьютера.