Я хочу разделить или «обрезать» поле (имя) на моем SQL-сервере в таблице... Но я получаю ошибки всеми испробованными способами.
Пример кода ошибки для моего личного Заявления о лучшем способе:
Столбец SingleWords или пользовательский агрегат "SingleWords.value" не найден, или имя неоднозначно.
Например:
У меня есть поле, которое называется: «имя». Это поле включает имя и фамилию (разделенные CR/LF или пробелом).
Для моего заявления мне нужно разделить имя на два разных поля. Но я хочу использовать только SQL-Management Studio.
Это возможно?
Мой уровень совместимости SQL равен "130"...
я попробовал следующее заявление для примера:
SELECT NAME FROM dbo.CRM_IM_X STRING_SPLIT(Name, CHAR(13)+CHAR(10)) WHERE RTRIM(NAME) <> '';
ИЛИ (мой личный лучший способ):
SELECT CAST('<x>' + REPLACE(NAME,CHAR(13)+CHAR(10),'</x><x>') + '</x>' AS XML) AS SingleWords
FROM dbo.CRM_IM_X
SELECT SingleWords.value('x[1]','varchar(max)') AS part1
,SingleWords.value('x[2]','varchar(max)') AS part2
FROM dbo.CRM_IM_X
Часть 1 для имени,
Часть 2 для фамилии,
CHAR(13)+CHAR(10) для CR/LF.
ПРИМЕР ВВОДА ДАННЫХ:
DECLARE @tbl TABLE(NAME VARCHAR(100));
INSERT INTO @tbl VALUES('Jane
Doe'),('John
Doe');
Но я застрял в объединении этих двух операторов Select вместе...
Mr Smith
,Mr George W Bush
, если у вас нет согласованности с вашими данными, вы не добьетесь этого. Если вы не можете делать безопасные предположения, вы получите неправильные результаты. - person Larnu   schedule 09.04.2018