T sql select int 值作为铸造 varchar
T sql select int value as casting varchar
我有一个名为 GetReport 的存储过程
customers.branches_ID is int type
但是@Branches 参数是 varchar
@Branches 是“10,13534,554,776,767”
我想在 branches_ID 中搜索 10,13534,554,776,767 但是如果我 cast/convert 到 varchar 它对我不起作用。
ALTER PROCEDURE [dbo].[GetReport]
@fromDate datetime,
@toDate datetime,
@Branches varchar (500) = null
AS
BEGIN
SET NOCOUNT ON;
select * from customers where
(customers.CreatedDate between @fromDate and @toDate) and
(@Branches is null or CONVERT(varchar(500), customers.branches_ID) in(@Branches )) -- This part is not working for me
END
如何解决这个问题如何在 int 列中搜索多个逗号 varcvhar?
谢谢。
至少有4种方法。这是一个:
select * from customers where
customers.CreatedDate between @fromDate and @toDate and
(@Branches is null or branches_ID
IN(
SELECT y.i.value('(./text())[1]', 'nvarchar(4000)')
FROM ( SELECT x = CONVERT(XML, '<i>' + REPLACE(@Branches, ',', '</i><i>')
+ '</i>').query('.')
) AS a
CROSS APPLY x.nodes('i') AS y ( i )))
在这里寻找其他方法http://blogs.msdn.com/b/amitjet/archive/2009/12/11/sql-server-comma-separated-string-to-table.aspx
但是如果您使用 Sql Server 2008 或更高版本,您可以对此类工作使用 table 值类型。
我有一个名为 GetReport 的存储过程
customers.branches_ID is int type
但是@Branches 参数是 varchar
@Branches 是“10,13534,554,776,767”
我想在 branches_ID 中搜索 10,13534,554,776,767 但是如果我 cast/convert 到 varchar 它对我不起作用。
ALTER PROCEDURE [dbo].[GetReport]
@fromDate datetime,
@toDate datetime,
@Branches varchar (500) = null
AS
BEGIN
SET NOCOUNT ON;
select * from customers where
(customers.CreatedDate between @fromDate and @toDate) and
(@Branches is null or CONVERT(varchar(500), customers.branches_ID) in(@Branches )) -- This part is not working for me
END
如何解决这个问题如何在 int 列中搜索多个逗号 varcvhar?
谢谢。
至少有4种方法。这是一个:
select * from customers where
customers.CreatedDate between @fromDate and @toDate and
(@Branches is null or branches_ID
IN(
SELECT y.i.value('(./text())[1]', 'nvarchar(4000)')
FROM ( SELECT x = CONVERT(XML, '<i>' + REPLACE(@Branches, ',', '</i><i>')
+ '</i>').query('.')
) AS a
CROSS APPLY x.nodes('i') AS y ( i )))
在这里寻找其他方法http://blogs.msdn.com/b/amitjet/archive/2009/12/11/sql-server-comma-separated-string-to-table.aspx
但是如果您使用 Sql Server 2008 或更高版本,您可以对此类工作使用 table 值类型。