如何拆分字符串值
我想获得身份....
Table1
ID
001
002
003
查询
SELECT id FROM Table1 WHERE (id IN ('" & Eid & "'))
If Eid = 001 means It is displaying id 001
If Eid = 001, 002 means id is not displaying
如何查询获取多个ID。
需要查询帮助
答案 0 :(得分:2)
删除'
引号:
SELECT id FROM Table1 WHERE (Personid IN (" & Eid & "))
您的版本正在生成
... WHERE (PersonID IN ('001,002'))
表示设置括号内有 SINGLE 值。没有单引号:
... WHERE (PersonID IN (001,002))
您在设置的括号中有两个值。
但请注意,前导0可能会导致问题。它们可以作为八进制值进行解释,因此009
将被解释为“10十进制”。您可能需要预先处理您的值以将其转换为
... WHERE (PersonID IN ('001', '002))
代替。
答案 1 :(得分:2)
CREATE FUNCTION [dbo].[fnGetIDasTable] (
@ids varchar(MAX),
@separator varchar(20)
) RETURNS @retTable TABLE(ID bigint)
BEGIN
DECLARE @firstComma bigint
IF (@ids IS NOT NULL)
BEGIN
WHILE @ids != ''
BEGIN
SET @firstComma = CHARINDEX(@separator, @ids)
IF @firstComma = 0
BEGIN
INSERT INTO @retTable
VALUES (@ids)
RETURN
END
INSERT INTO @retTable
VALUES (CONVERT(bigint, SUBSTRING(@ids, 1, @firstComma - 1)))
SET @ids = SUBSTRING(@ids, @firstComma + 1, LEN(@ids))
END
END
RETURN
END
GO
DECLARE @IdList varchar(MAX) = '1,3'
SELECT id FROM Table1
INNER JOIN [dbo].[fnGetIDasTable] (@IdList,',') il ON Table1.id = il.ID
GO
答案 2 :(得分:0)
与Marc B的回答一样,但我的解决方案更容易一些。
SELECT id FROM Table1 WHERE id IN (
replace(
replace('" & Eid & "',' ','')
,',',''','''
)
)
首先替换是删除空格(如果没有空格,可以删除此替换)
第二次替换正在替换','