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

SQL Server 2005:разделяне на низ в масив и получаване на масив (x)?

Тук приемам, че винаги има точно 4 части.

Ако е така, можете да замените / с . и използвайте добре вградения ParseName функция. Единственият проблем от вашия пример е, че се брои от края, така че трябва да внимавате коя част искате:

DECLARE @test VARCHAR(max);
SET @test = 'Peter/Parker/Spiderman/Marvel';
SET @test = Replace(@test, '/', '.');

SELECT Parsename(@test, 4),--returns Peter
       Parsename(@test, 3),--returns Parker
       Parsename(@test, 2),--returns Spiderman
       Parsename(@test, 1) --returns Marvel

Ако има променлив брой части, ще трябва да намерите функция за разделяне на низове, за да направите това вместо вас, няма вградена добра. Много опции могат да бъдат намерени при търсене SO:https://stackoverflow.com/search?q=[sql+server]+string+split

Предупреждение - ако се опитате да използвате число с PARSENAME различен от 1-4, резултатът винаги ще бъде NULL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изхвърлете всички таблици, чиито имена започват с определен низ

  2. С ПРОВЕРКА НА ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ, последвано от ПРОВЕРКА НА ОГРАНИЧЕНИЕ спрямо ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ

  3. Отстраняване на неизправности при блокиране в Sql Server 2008

  4. Редове на SQL Server не могат да се редактират за Access след вмъкване

  5. Как да актуализирам стойност на xml атрибут в xml променлива с помощта на t-sql?