我试图在多个列上搜索单个术语。我收到错误,因为其中一列是日期时间。我怎么能用内联sql进行通用搜索。这样我就试过了。
create table tbl_test1
(id int identity(1,1),
column1 nvarchar(50),
coulmn2 nvarchar(50),
coulmn3 nvarchar(50),
coulmn4 datetime)-- Create a table
insert into tbl_Test1 (column1,coulmn2,coulmn3,coulmn4) values
('Griff','Serjey','Maciej',GETDATE()),
('King','Fisher','Ajay',GETDATE()),
('Paul','Griff','Serjey',GETDATE()),
('King','Fisher','Griff',GETDATE())
select * from tbl_Test1 where 'Griff' IN (column1,coulmn2,coulmn3,coulmn4)
我收到了这个错误。
从字符转换日期和/或时间时转换失败 字符串。
答案 0 :(得分:1)
要修复您的要求,您可以先将column4
,datetime
列转换为nvarchar(max)
第一个
select * from tbl_Test1 where 'Griff' IN
(column1,coulmn2,coulmn3,convert(nvarchar(max),coulmn4))
但是,由于性能问题=x
答案 1 :(得分:0)
从2012年起,您可以使用.TRY_Convert
select * from #tbl_Test1
where 'Griff'
IN (column1,coulmn2,coulmn3,try_convert(varchar(10),coulmn4))
当您使用日期列
搜索时,您可能需要在其他列上执行类似的强制转换和转换答案 2 :(得分:0)
您已经知道您的column4属于datetime类型,那么我们为什么要使用该列搜索您的字符串。只需忽略该列
试试这个,
SELECT *
FROM tbl_test1
WHERE 'Griff' IN (
column1
,coulmn2
,coulmn3
)