Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Извличане на знаци отдясно на разделена стойност в оператор SELECT

Този въпрос има специфичен за базата данни отговор.

Ако използвате SQL Server:

SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable

Можете да добавите CASE израз или използвайте NULLIF() в случай че тирето не винаги присъства:

SELECT column1
     , CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) 
           END as extracted
     , column3 
FROM myTable

Или:

SELECT column1
     , RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
     , column3 
FROM myTable

Ако използвате MySQL, просто променете CHARINDEX() към LOCATE() . Вярвам, че Oracle е INSTR() и първите два параметъра се превключват, първо е низът, в който търсите, след това низът, който търсите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Автоматично събиране на данни:файлове с бази данни и логически устройства в MS SQL Server

  2. Текущи суми в SQL изглед

  3. Грешка при двусмислено име на колона

  4. Как да промените настройките за конфигурация за поща на база данни в SQL Server (T-SQL)

  5. Въведение в SQL Server 2017