sql语句将1,2,3字符串转换为int类型

2025-04-04 05:27:35
推荐回答(3个)
回答1:

问题不太明了。

IN 一个集合,这个集合可以是常量如 (1, 2, 3),也可以是个查询如 IN (SELECT id FROM user1)。
如果user1.id是字符串,可以使用CAST转换(数据库也会隐式得转换,不写也可以):
db.id IN (SELECT CAST(id AS int) FROM user1)

你还要IN 在organizationid的话,一个IN是不够的,用OR连起来
db.id IN (SELECT CAST(id AS int) FROM user1)

OR db.id IN (CAST(LTRIM(o.organizationid AS int)))

回答2:

创建一个函数,把字符串变成表格
CREATE FUNCTION fn_StringSplitTable
(
@str NVARCHAR(MAX),
@split NVARCHAR(10)
)
RETURNS TABLE
AS
RETURN
(
SELECT B.id
FROM
(
SELECT [value] = CONVERT(XML , '' + REPLACE(@str , @split , '') + '')
) A
OUTER APPLY
(
SELECT id = N.v.value('.' , 'nvarchar(100)')
FROM A.[value].nodes('/v') N ( v )
) B
)
Go
查询可以为
select * from tb where id IN (SELECT CAST(id AS INT) FROM dbo.fn_StringSplitTable('1,2,3', ','))

回答3:

用charindex函数判断就好了,你写的判断语句都已经判断了,你的需求不清楚啊