select * from fb_lab_test
where (report_item_code = 'HBcAb' and result like '%positive%')
or (
report_item_code = 'Anti-Hbc' and
case isnumeric(result) when 1 then cast(result as float) else 10000.0 end > 0.2
)
У меня есть два условия в этом SQL, когда я использую любое из них, нет ошибки, но когда я добавляю OR
, появляется ошибка:
Error преобразование типа данных varchar в float
Кто-нибудь может помочь? Большое спасибо.
Вот пример данных
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE fb_lab_test(
[id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[Test_No] [varchar](50) NULL,
[execute_date] [datetime] NULL,
[PatientId] [varchar](20) NULL,
[Visit_Id] [varchar](10) NULL,
[Patient_Type] [int] NULL,
[PatientName] [varchar](100) NULL,
[result_date_time] [datetime] NULL,
[report_item_name] [varchar](256) NULL,
[report_item_code] [varchar](50) NULL,
[result] [varchar](100) NULL
) ON [PRIMARY]
GO
INSERT INTO fb_lab_test values('5910315197','2019-10-31 00:40:53.000','111111','1','1','Tom','2019-10-31 08:56:54.000','test1','KET','-')