У меня есть строковый тип abc_01, abcd_01 или 02 Теперь я хочу подстрока ДО _ т.е. abc_, abcd_ и т.д. Я использую db2 as400 .Please предполагают обработку через вправо или влево функциюБаза данных: SUBSTRING ДО первого вхождения символа
ответ
Используйте встроенную функцию POSITION. Формат является:
POSITION--(--search-string--IN--source-string--)
или
POSSTR--(--source-string--,--search-string--)
Я также предлагаю использовать структуру CASE, чтобы проверить, когда нет _ или, если это в начале или в конце. Вот пример. Предположим, для примера, что поле, о котором идет речь, творчески называется FIELD1 и что оно не допускает значений NULL.
SELECT
CASE WHEN POSITION('_' IN FIELD1) = 0 THEN FIELD1
WHEN POSITION('_' IN FIELD1) = 1 THEN ''
ELSE LEFT(FIELD1, POSITION('_' IN FIELD1)-1) END AS "Left Side",
CASE WHEN POSITION('_' IN FIELD1) < 1 THEN ''
WHEN POSITION('_' IN FIELD1) = LENGTH(FIELD1) THEN ''
ELSE RIGHT(FIELD1, LENGTH(FIELD1)-POSITION('_' IN FIELD1)) END AS "Right Side"
FROM MYTABLE1
Ваш вопрос просил использовать влево и вправо, встроенные функции, так это то, что в данном примере используется. Для правой стороны я предлагаю, чтобы использование SUBSTRING было проще и понятнее. Это будет выглядеть так: SUBSTRING (FIELD1, POSITION ('_' IN FIELD1) +1)
SELECT SUBSTRING('Hello',0,CHARINDEX('o','Hello',0))
Вернул бы «Ад» в SQL. Я не уверен в db2 as400, но вы также отметили «SQL». Надеюсь, что это поможет
Просто попробовал это на DB2 AS400, и он не работает. – Soph
К сожалению, CHARINDEX() не является допустимой функцией SQL. Это всего лишь расширение в нескольких СУБД, таких как SQL Server и Sybase. – user2338816
- 1. Matching до первого вхождения символа
- 2. Удалить или заменить до первого вхождения символа в Perl
- 3. Удалить из строки первого вхождения данного символа
- 4. удаление первого вхождения символа в DB2
- 5. Разделить строку на основе первого вхождения символа
- 6. УстанавливаетMnemonic подчеркивание символа, отличного от первого вхождения
- 7. Python :: удалите все вхождения до первого места
- 8. удалить все до последнего вхождения символа
- 9. Подмножество данных для первого вхождения в R
- 10. Выделить все до первого появления символа
- 11. Удалите символ в первенствуете до первого символа
- 12. Возьмите строку и верните все вхождения ее первого символа с '*'
- 13. Найти позицию первого вхождения символа в строке после определенной позиции
- 14. Совпадение первого вхождения строки
- 15. Поиск подстроки, которая начинается с ':' до первого пробела после символа ':'
- 16. Regex: соответствие до первого появления символа
- 17. Regexp - от первого символа до персонажа
- 18. regex: совпадение до первого символа найдено
- 19. Удаление пробелов до первого допустимого символа C
- 20. Java Regex от начала до первого символа
- 21. vim: как удалить пробелы до первого символа?
- 22. regex от первого символа до конца строки
- 23. Как заставить substring() читать строку до определенного символа?
- 24. не Выбор всех строк до первого вхождения заданного значения
- 25. BASH - просто удалить пробелы до первого символа и последнего символа
- 26. Нахождение первого индекса первого вхождения цифр
- 27. обновление данных MySQL путем изменения первого символа
- 28. Удалить весь текст до первого вхождения определенного characeter в R
- 29. SED не/AWK удалить строку до первого вхождения
- 30. Заменить все вхождения пространства до первого регулярного выражения запятой?
благодаря этой ссылке помог мне – Soph
@Soph Возможно, это помогло, но это не правильная ссылка для DB2 on i. Используйте [DB2 on i documentation] (http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_61/rzahg/rzahgdb.htm?lang=en), когда целью является IBM i (AS/400 или более поздняя версия) Платформа. Эта ссылка предназначена для DB2 on i 6.1. Используйте соответствующий информационный центр для версии ОС, если у вас есть более поздняя цель. – user2338816