我正在尝试在列上使用此功能,但似乎不允许:
如果我使用
SELECT *
FROM STRING_SPLIT('John,Jeremy,Jack', ',')
我得到了值“John”、“Jeremy”和“Jack”
如果我使用:
SELECT *
FROM STRING_SPLIT(Obs, ' ')
(
Obs
是文字)
或
SELECT *
FROM STRING_SPLIT(appointments notes, ' ')
我收到错误消息:
参数数据类型 void 类型对于 string_split 函数的参数 1 无效
我什至尝试过:
SELECT *
FROM STRING_SPLIT(select obs from log, '-')
导致此错误:
关键字“select”附近的语法不正确。
消息 102,第 15 级,状态 1,第 6 行
“-”附近的语法不正确
如何解决这个问题?
当您在表的列上使用 string_split() 时,您可以尝试使用交叉应用。
您的查询如下:
select value from
log cross apply STRING_SPLIT(obs,',')
DB-Fiddle 您的询问:
create table log(Obs varchar(500));
insert into log values('ohn,Jeremy,Jack');
您的询问:
select value from
log cross apply STRING_SPLIT(obs,',')
输出:
价值 |
---|
哦 |
杰里米 |
杰克 |
示例:
CREATE TABLE contacts (
id INT PRIMARY KEY IDENTITY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
phones VARCHAR(500)
);
INSERT INTO
contacts(first_name, last_name, phones)
VALUES
('John','Doe','(408)-123-3456,(408)-123-3457'),
('Jane','Doe','(408)-987-4321,(408)-987-4322,(408)-987-4323');
查询:
SELECT
first_name,
last_name,
value phone
FROM
contacts
CROSS APPLY STRING_SPLIT(phones, ',');
输出:
名字 | 姓氏 | 电话 |
---|---|---|
约翰 | 母鹿 | (408)-123-3456 |
约翰 | 母鹿 | (408)-123-3457 |
简 | 母鹿 | (408)-987-4321 |
简 | 母鹿 | (408)-987-4322 |
简 | 母鹿 | (408)-987-4323 |
db
谢谢大家的帮助,我已经尝试了你们的建议,但仍然遇到同样的错误。
这是日志列中的 2 条记录示例:
Obs
ID:786988|Patient_ID:320165|Staff_ID:PF|Date:05/06/2021 13:00:24|DiaryTemplates_ID:244799|Notes:Relatório 786988|Access:1|EventID:5|Status:4|Staff_ID_Writer:PES|Staff_ID_Signature:0|StatusReason:|StatusObs:|DateReceived:05/06/2021 13:00:24|NameReceived:|CountPrints:0|Staff_ID_Auxiliar:PES|PatientEpisode_ID:664831|
ID:872474|Patient_ID:340246|Staff_ID:PFI|AppointmentDate:29/05/2021 09:33:21|Convencao:XCD_ttt_NE_C2|NBenef:3X34977|NRequisicao:4SFR09995393153409|NAutorization:|Treatment_ID:6898|TreatmentCode:743.9|TotalValue:75,34|PatientValue:0,00|ConvencaoValue:75,34|StaffValue:0,00|FactConvencao:True|FactConvencaoDate:31/05/2021 19:14:53|FactStaff:False|FactStaffGuID:|PatientValueDiscount:0,00|Recibo:True|ReciboGuID:|FactConvencaoClinic_ID:HJUSD2|Piece:|ClinicsLocations_ID:1|FactConvencaoYearMonth:202105|FactConvencaoSequencial:31|FactConvencaoLote:155|FactConvencaoStaff_ID:TRI|Quantity:1|FactConvencaoLoteType:M|RequesterCode_Medico:M2XD33|RequesterCode_CentroSaude:XCD202|PatientDiary_ID:F45724|Appointment_ID:793049|DataExecucao:29/05/2021 09:30:00|DataEntrega:04/06/2021 00:00:00|PatientEpisode_ID:664807|ToExecute:True|Position:1|FactConvencaoNDevolucao:|FactConvencaoCanDefact:|NRequisicaoDate:|DataFacturacao:29/05/2021 09:33:21|ClinicalReportsDestinations_ID:|ClinicalReportsDestinations_ByWho:|ClinicalReportsDestinations_Date:|ClinicalReportsDestinations_DateDelivery:|TypeOrigem:|SPMS_IdMcdt:|
“|”之间的每个字符串':' 是另一个表的列名,其值位于 ':' 后面。数据类型为“
text
”。
我需要将这些值拆分为单独的列以更新其他表。
谢谢。