Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算在整个SQL Server表中找到单个字符的次数_Sql_Sql Server_While Loop - Fatal编程技术网

计算在整个SQL Server表中找到单个字符的次数

计算在整个SQL Server表中找到单个字符的次数,sql,sql-server,while-loop,Sql,Sql Server,While Loop,如果SQL Server中有下表: CREATE TABLE #tv_shows ( tv_character varchar(50), show varchar(50), channel varchar(50) ); INSERT INTO #tv_shows (tv_character, show, channel) SELECT 'Peter', 'Family Guy', 'Fox' UNION ALL SELECT 'Ros|s', 'Friends', '

如果SQL Server中有下表:

CREATE TABLE #tv_shows
(
    tv_character varchar(50),
    show varchar(50),
    channel varchar(50)
 );

INSERT INTO #tv_shows (tv_character, show, channel)
SELECT 'Peter', 'Family Guy', 'Fox'
UNION ALL SELECT 'Ros|s', 'Friends', 'NBC|'
UNION ALL SELECT 'Britta', 'Community', 'N|BC'

select * from #tv_shows

tv_character  show        channel
Peter         Family Guy  Fox
Ros|s         Friends     NBC|
Britta        Community   N|BC
我正在SQL Server中寻找一种方法来“循环”通过
#tvshows
来计算在每列中找到
字符的次数。我要寻找的输出大致如下:

tv_character  show  channel
1             0     2
澄清编辑:我想以循环方式应用每列的计数,这样就不必为每列编写函数。i、 例如,可以应用于此处的3列示例或150列数据表的内容。

尝试以下操作:

select sum(len([character]) - len(replace([character], '|', ''))),
       sum(len(show) - len(replace(show, '|', ''))),
       sum(len(channel) - len(replace(channel, '|', '')))
from [data.table]
试试这个:

select sum(len([character]) - len(replace([character], '|', ''))),
       sum(len(show) - len(replace(show, '|', ''))),
       sum(len(channel) - len(replace(channel, '|', '')))
from [data.table]

你可以用这样的东西

SELECT SUM(len(character) - len(replace(character, '|', ''))) AS character,
SUM(len(show) - len(replace(show, '|', ''))) AS show,
SUM(len(channel) - len(replace(channel, '|', ''))) AS channel
FROM data.table

你可以用这样的东西

SELECT SUM(len(character) - len(replace(character, '|', ''))) AS character,
SUM(len(show) - len(replace(show, '|', ''))) AS show,
SUM(len(channel) - len(replace(channel, '|', ''))) AS channel
FROM data.table

我想这让我大部分的路都走到了那里。虽然我对问题进行了编辑以进一步说明,但最初的问题是要求使用循环类型的解决方案,这样用户就不必为每个显式列编写代码。谢谢。我想这让我大部分时间都能到达那里。虽然我对问题进行了编辑以进一步说明,但最初的问题是要求使用循环类型的解决方案,这样用户就不必为每个显式列编写代码。谢谢。@bshelt141。这回答了最初的问题,也是第一个答案。我认为您应该接受这个答案,并询问另一个有关您想要的动态查询的问题。@bshelt141。这回答了最初的问题,也是第一个答案。我认为你应该接受这个答案,并询问另一个关于你想要的动态查询的问题。除了学术/学习情况,这在现实世界中似乎没有什么实际的好处。除了学术/学习情况,这在现实世界中似乎没有什么实实在在的好处。