我正在尝试将多个值作为一个参数传递。例如:我需要得到._text_clamp_container {
._clamped_text {
._text_clamp_show_all, ._text_clamp_collapse {
background-color: transparent;
padding: 0px;
margin: 0px;
border: none;
color: #2369aa;
cursor: pointer;
&:focus {
outline: none;
text-decoration: underline;
}
&:hover {
text-decoration: underline;
}
}
}
}
in(1,2,3,4,5),employeeID
字段数据类型为Integer。
查询:
employeeID
我创建一个值为{1}的变量select * from emp where employeeID = ?
并传递OLEDB Source中的参数映射。我可以传递一个值,但我不能传递多个值。
答案 0 :(得分:0)
一种解决方法是创建一个函数:
CREATE FUNCTION [dbo].[fn_GenerateIDs]
(
@psCSString VARCHAR(8000)
)
RETURNS @otTemp TABLE(sID VARCHAR(20))
AS
BEGIN
DECLARE @sTemp VARCHAR(10)
WHILE LEN(@psCSString) > 0
BEGIN
SET @sTemp = LEFT(@psCSString, ISNULL(NULLIF(CHARINDEX(',', @psCSString) - 1, -1),
LEN(@psCSString)))
SET @psCSString = SUBSTRING(@psCSString,ISNULL(NULLIF(CHARINDEX(',', @psCSString), 0),
LEN(@psCSString)) + 1, LEN(@psCSString))
INSERT INTO @otTemp VALUES (@sTemp)
END
RETURN
END
以格式:'1,2,3,4'
如:
select *
from fn_GenerateIDs('1,2,3')
结果:
+----+
| ID |
+----+
| 1 |
+----+
| 2 |
+----+
| 3 |
+----+
然后你必须以varchar格式传递参数:" 1,2,3,4,5" 并将其与Employee表进行比较:
select * from emp where
EXISTS ( select 1 from fn_GenerateIDs('1,2,3') where employeeID = sID)
如果您使用SQL Server 2016,另一个选择是使用新添加的函数STRING_SPLIT
需要2个参数:ID字符串和分隔符
如:
select * from dbo.emp
inner join string_split('1,2,3,4',',') on dbo.emp.employeeID = value
答案 1 :(得分:0)
一个简单的解决方案是使整个查询成为变量。如果您的Mac$ cp -W 1 2; echo $?
cp: illegal option -- W
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
64
变量包含“1,2,3”(顺便说一下,它必须是字符串变量),那么您的@employeeID
变量将是:
@SQLQuery
然后在OLEDB源中,使用“从变量查询”选项,并使用"select * from emp where employeeID IN (" + @employeeID +")"
变量作为源。