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

Подниз след интервал

Ето версия, използваща SUBSTRING и CHARINDEX за версии на SQL SERVER преди SQL Server 2016, когато STRING_SPLIT беше въведен.

Някое от следните работи:

SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, 20)

SELECT  SUBSTRING(@string, CHARINDEX(' ', @string) +1, DATALENGTH(@string) - CHARINDEX(' ', @string) +1 )

Трябва да намерим позицията на интервала, като използваме CHARINDEX (който връща число, представляващо къде започва низът (интервалът). Но низът, който искаме да изберем, започва след интервала, следователно трябва да добавим 1 (+1) към начална позиция на нашия ПОДНИЗ, така че началната позиция да стане CHARINDEX(' ', @string) + 1.

Третият аргумент за SUBSTRING е дължината на низа за избор, в първия случай просто предполагам, че низът, който сте посочили като varchar(20), не може да бъде по-дълъг от 20 знака, следователно използвам 20. Забележка SUBSTRING няма да се опита да изберете знаци след края на низа, така че е безопасно да посочите дължина, по-голяма от броя на оставащите знаци.

Вторият ми пример получава дължината на низа за избор въз основа на дължината на общия низ (DATALENGTH) минус броя знаци преди нашия избор (CHARINDEX + 1)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво SqlDbType се съпоставя с varBinary(max)?

  2. Изчислете липсващи периоди от време и припокриващи се периоди от време между две дати

  3. Как да проверите кои брави се държат на маса

  4. MS Excel - обединяване на външни (SQL) данни с локална таблица (лист)

  5. SQL заявка за търсене в схема на всички таблици