Есть ли какая-либо команда для выполнения SQL и вырезания последних слов в строке базы данных?
Короче №.
Однако вы можете извлечь последнее слово, но было бы обременительно, если бы не было более конкретного слова, такого как длина.
Вероятно, было бы гораздо продуктивнее спроектировать базу данных с учетом ее предполагаемого использования.
Например, следующее извлечет последнее слово со следующими предположениями / условиями / ограничениями: -
- Последнее слово имеет длину не менее 1 символа и не более 30 символов вдлина.
- Существует только один символ-разделитель, а именно - .
: -
SELECT *,
CASE
WHEN instr(substr(slug,length(slug) -2),'-') > 0
THEN substr(slug,length(slug)-1)
WHEN instr(substr(slug,length(slug) -3),'-') > 0
THEN substr(slug,length(slug)-3)
WHEN instr(substr(slug,length(slug) -4),'-') > 0
THEN substr(slug,length(slug)-4)
WHEN instr(substr(slug,length(slug) -5),'-') > 0
THEN substr(slug,length(slug)-4)
WHEN instr(substr(slug,length(slug) -6),'-') > 0
THEN substr(slug,length(slug)-5)
WHEN instr(substr(slug,length(slug) -7),'-') > 0
THEN substr(slug,length(slug)-6)
WHEN instr(substr(slug,length(slug) -8),'-') > 0
THEN substr(slug,length(slug)-7)
WHEN instr(substr(slug,length(slug) -9),'-') > 0
THEN substr(slug,length(slug)-8)
WHEN instr(substr(slug,length(slug) -10),'-') > 0
THEN substr(slug,length(slug)-9)
WHEN instr(substr(slug,length(slug) -11),'-') > 0
THEN substr(slug,length(slug)-10)
WHEN instr(substr(slug,length(slug) -12),'-') > 0
THEN substr(slug,length(slug)-11)
WHEN instr(substr(slug,length(slug) -13),'-') > 0
THEN substr(slug,length(slug)-12)
WHEN instr(substr(slug,length(slug) -14),'-') > 0
THEN substr(slug,length(slug)-13)
WHEN instr(substr(slug,length(slug) -15),'-') > 0
THEN substr(slug,length(slug)-14)
WHEN instr(substr(slug,length(slug) -16),'-') > 0
THEN substr(slug,length(slug)-15)
WHEN instr(substr(slug,length(slug) -17),'-') > 0
THEN substr(slug,length(slug)-16)
WHEN instr(substr(slug,length(slug) -18),'-') > 0
THEN substr(slug,length(slug)-17)
WHEN instr(substr(slug,length(slug) -19),'-') > 0
THEN substr(slug,length(slug)-18)
WHEN instr(substr(slug,length(slug) -20),'-') > 0
THEN substr(slug,length(slug)-19)
WHEN instr(substr(slug,length(slug) -21),'-') > 0
THEN substr(slug,length(slug)-20)
WHEN instr(substr(slug,length(slug) -22),'-') > 0
THEN substr(slug,length(slug)-21)
WHEN instr(substr(slug,length(slug) -23),'-') > 0
THEN substr(slug,length(slug)-22)
WHEN instr(substr(slug,length(slug) -24),'-') > 0
THEN substr(slug,length(slug)-23)
WHEN instr(substr(slug,length(slug) -25),'-') > 0
THEN substr(slug,length(slug)-24)
WHEN instr(substr(slug,length(slug) -26),'-') > 0
THEN substr(slug,length(slug)-25)
WHEN instr(substr(slug,length(slug) -27),'-') > 0
THEN substr(slug,length(slug)-26)
WHEN instr(substr(slug,length(slug) -28),'-') > 0
THEN substr(slug,length(slug)-27)
WHEN instr(substr(slug,length(slug) -29),'-') > 0
THEN substr(slug,length(slug)-28)
WHEN instr(substr(slug,length(slug) -30),'-') > 0
THEN substr(slug,length(slug)-29)
ELSE 'ooops not found'
END AS lastword
FROM mytable;
- Вышесоответственно, может быть короче, если минимальная длина последнего слова была больше 1 и / или максимальная длина меньше 30
- . Приведенный выше выводит все столбцы таблицы плюс новый с именем lastword
Например, если входная таблица была ( данные отличаются, я не собирался ни пытаться копировать со скриншота, ни подсчитывать, чтобы увидеть, были ли последние словатой же длины ): -
Результат из вышеперечисленного будет: -