我有一个像这样的查询
DECLARE @patientId INT
SET @patientId = 0
IF EXISTS(SELECT TOP 1 SUBSTRING(TRN02, 1, CHARINDEX('-', TRN02) - 1)
FROM EDI_X12.dbo.X12_TRN
WHERE X12_Interchange_GUID = 'd6803485-3f46-485c-8288-2cfc98ec7088'
AND TRN02 LIKE '%-%'))
BEGIN
SET @patientId = (SELECT TOP 1 SUBSTRING(TRN02, 1, CHARINDEX('-', TRN02) - 1)
FROM EDI_X12.dbo.X12_TRN
WHERE X12_Interchange_GUID = @px12_interchange_guid
AND TRN02 LIKE '%-%')
END
TRN02
的值为112345-6458PT
此处'6457PT'
为patientID
,该列定义为INT
以及如何在此特定查询中将varchar转换为int?
我想将'6457PT'保存为INT字段中的patientid
提前致谢
纳温
答案 0 :(得分:1)
试试这个
DECLARE @patientId int;
SELECT @patientId = CAST(SUBSTRING(TRN02, 1, CHARINDEX('-', TRN02) - 1) as INT)
FROM EDI_X12.dbo.X12_TRN
WHERE X12_Interchange_GUID = 'd6803485-3f46-485c-8288-2cfc98ec7088'
AND TRN02 LIKE '%-%'
IF @patientId is null
BEGIN
SET @patientId = 0;
END
通过这种方式,您只有一个选择instaed两个(您不需要检查该行是否存在)。 但你不能将值 6458PT 强制转换为INT,是指 6458 还是 112345 ?
我希望这可以帮到你