asp.net - 如何在 SQL Server 存储过程中用逗号分隔(分割)字符串

标签 asp.net sql sql-server stored-procedures

我有一个checkboxlist 。选定(选中)的项目存储在 List<string> selected 中.

例如,选择的值为 monday,tuesday,thursday 7 天之内

我正在转换List<>以逗号分隔 string ,即

string a= "monday,tuesday,thursday"

现在,我将此值作为字符串传递给存储过程。我想触发如下查询:

Select * 
from tblx 
where days = 'Monday' or days = 'Tuesday' or days = 'Thursday'`

我的问题是:如何在存储过程中分隔字符串?

最佳答案

如果您将逗号分隔(任何分隔符)字符串传递给存储过程并在查询中使用,那么必须需要吐出该字符串,然后您将使用它。

下面有示例:

DECLARE @str VARCHAR(500) = 'monday,tuesday,thursday'
CREATE TABLE #Temp (tDay VARCHAR(100))
WHILE LEN(@str) > 0
BEGIN
    DECLARE @TDay VARCHAR(100)
    IF CHARINDEX(',',@str) > 0
        SET  @TDay = SUBSTRING(@str,0,CHARINDEX(',',@str))
    ELSE
        BEGIN
        SET  @TDay = @str
        SET @str = ''
        END
  INSERT INTO  #Temp VALUES (@TDay)
 SET @str = REPLACE(@str,@TDay + ',' , '')
 END

 SELECT * 
 FROM tblx 
 WHERE days IN (SELECT tDay FROM #Temp)

关于asp.net - 如何在 SQL Server 存储过程中用逗号分隔(分割)字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089579/

相关文章:

javascript - 使用 jQuery 从 Json 填充选择/选项时,ASP.NET MVC 清空选择

javascript - 如何从视频网址创建缩略图

sql - Postgres - 将行数据作为 JSON 数组或数组返回

sql - 使列长度成为另一个数据库中列的最大长度

c# - 使用 MVC 时实体模型的命名约定

asp.net - 压缩 session 数据以将 Redis 作为 ASP.NET session 存储存储在 ElastiCache 中

mysql - 在一对多关系表中获取最低共享值

mysql - 如何撤销sql USE?

mysql - 2 个数据库之间更快的 mysql 查询

sql - 将 Sql Server 2014 数据库连接到 Azure VM