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

Как да разделите низ в SQL Server

Проблем:

Искате да разделите низ в SQL Server.

Пример 1:

Имате изречение и искате да го разделите с интервал.

Решение 1:

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Резултатът изглежда така:

стойност
A
пример
изречение.

Дискусия:

Функцията STRING_SPLIT(низ, разделител) в SQL Server разделя низа в първия аргумент чрез разделителя във втория аргумент. За да разделите изречение на думи, посочете изречението като първи аргумент на STRING_SPLIT() функция и ' ' като втори аргумент.

STRING_SPLIT() води до колона с име стойност. За да получите всяка част от низа в отделен ред, изберете стойност от STRING_SPLIT(string, separator) . Например,

SELECT value
FROM STRING_SPLIT('An example sentence.', ' ');

Разбира се, можете да разделите низ, като използвате друг разделител, например запетая. Можете също да преименувате колоната, както всяка друга колона.

Пример 2:

В texts таблица, има няколко изречения.

изречение
Това е първото изречение.
А ето и другия.

Искате да разделите изреченията с интервал.

Решение 2:

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Резултатът изглежда така:

стойност
Това
е
на
първи
изречение.
И
ето ви
на
други
един.

Дискусия:

Точно както в предишния пример, функцията STRING_SPLIT(текст, разделител) разделя низа, даден като първи аргумент от разделителя. Този път имате няколко изречения, за които да се погрижите; тези изречения се съхраняват в texts маса. Ето защо трябва да използвате CROSS APPLY; по-конкретно,

texts CROSS APPLY STRING_SPLIT(sentence, ' ')

Използвайте го в FROM клауза. Това означава, че дясната страна (STRING_SPLIT(sentence, ' ') ) се прилага към всеки ред от лявата таблица (texts ). Ето защо дясната страна може да използва колоните от лявата таблица (тук колоната на изречението от texts таблица.) Ето заявката, която получавате.

SELECT value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Пример 3:

В texts таблица, има две колони:id и sentence .

id изречение
1 Това е първото изречение.
2 А ето и другия.

Искате да разделите изреченията с интервал и също така да покажете идентификаторите на изреченията.

Решение 3:

SELECT
  id,
  value
FROM texts
CROSS APPLY STRING_SPLIT(sentence, ' ');

Резултатът изглежда така:

id стойност
1 Това
1 е
1 на
1 първи
1 изречение.
2 И
2 ето
2 на
2 други
2 един.

Дискусия:

Този пример е много подобен, но вие също искате да видите id колона. За да видите тази колона, просто я добавете към SELECT списък и не забравяйте да включите запетаята. Ще видите идентификатора на изречението заедно с частите от изреченията в резултата. Например, първото изречение е разделено на 5 части и има ID 1 . Следователно идентификаторът за всичките 5 части в таблицата с резултати ще бъде 1 . Следващото изречение с идентификатор 2 , също е разделена на 5 части и всяка от тези части ще бъде показана с id = 2 .


  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. Как да замените NULL с друга стойност в SQL Server – ISNULL()

  3. SQL Pivot с множество колони

  4. Обектът 'DF__*' зависи от колона '*' - Промяна на int на double

  5. Съхранение и анализ на документи във файлова система на Windows със семантично търсене на SQL Server – част 2