#sql #sql-server #tsql
#sql #sql-сервер #tsql
Вопрос:
У меня есть данные в одном из столбцов, которые выглядят следующим образом: АЛАН, ДОНАЛЬД [1234], мне нужно разделить это на два столбца, например Имя (ALAN, DONALD), идентификатор (1234) Я попробовал следующий код, и я смог получить идентификатор, но не имя
create table #test(NAME_ID VARCHAR(50))
INSERT INTO #TEST VALUES ('ALAN,DONALD [1234])' )
SELECT CAST (substring(NAME_ID,charindex('[',NAME_ID) 1,charindex(']',NAME_ID)-charindex('[',NAME_ID)-1) AS VARCHAR (102) ) AS MRN FROM #TEST
Комментарии:
1. Подсказка … используйте LEFT и CHARINDEX.
2. вам следует рассмотреть возможность помещения этого кода в определяемую пользователем табличную функцию.
Ответ №1:
Вы могли бы сделать это на основе индекса скобки:
SELECT
RTRIM(SUBSTRING(NAME_ID, 0, CHARINDEX('[',NAME_ID))) AS Name,
CAST (SUBSTRING(NAME_ID,CHARINDEX('[',NAME_ID) 1,CHARINDEX(']',NAME_ID)-
CHARINDEX('[',NAME_ID)-1) AS VARCHAR (102) ) AS MRN
FROM #TEST