Строковые функции в SQL - PullRequest
       12

Строковые функции в SQL

0 голосов
/ 02 октября 2009

Мне нужен запрос (точнее, это представление, а не запрос), который будет возвращать строковый столбец. Строка будет кодом, который может начинаться с двух букв (LJ). Если это префикс - префикс должен быть обрезан. Если префикса нет, его следует оставить нетронутым. Можно ли сделать такую ​​вещь в SQL? Сервер FirebirdSQL 1.5.


Ни одно из данных решений не сработало, но с их помощью я смог сам в этом разобраться. Substring функция существует, но имеет другой синтаксис. Вместо запятых вы должны использовать правильные ключевые слова:

Substring(col from pos for count)

Ответы [ 5 ]

2 голосов
/ 02 октября 2009

да, вместо того, чтобы выбирать сам столбец, напишите выражение, которое заменяет префикс LJ ничем

   Select case When colName Like 'LJ%' 
                Then SubString([colName], 2, Len(colName) - 2)
                Else ColName End
   From ... 
1 голос
/ 02 октября 2009
SELECT
  CASE Substring(columnName, 2, 2) IS 'LJ' THEN Subsrtring(columnName, 2, LEN(columnName) -2) ELSE columnName END

Я думаю, это то, что вы ищете, не выполнили тестирование, но вы получили суть ...

Надеюсь, это поможет!

0 голосов
/ 03 октября 2009

Получите копию FreeUDFLib , у нее МНОГО функций для обработки строк, математики, даты, преобразований, обработки BLOB-объектов и т. Д. Он будет делать то, что вы хотите, намного больше вещей

0 голосов
/ 02 октября 2009

Вы можете сделать это с помощью строки:

SELECT CONCAT(REPLACE(LEFT(column_name,2), 'LJ', ''), SUBSTRING(column_name, 3))

Не уверен, что это сработает в Firebird (протестировано на Mysql).

0 голосов
/ 02 октября 2009
select case 
           when substring(MyColumn, 1, 2) = 'LJ' 
               then substring(MyColumn, 3, len(MyColumn) - 2) 
           else 
               MyColumn 
       end
...