如何使用SQL对列中的特殊字符进行计数

如何使用SQL对列中的特殊字符进行计数,sql,Sql,我有一个列,其中包含如下值: Column_1 3 4 -94#30#56# 56 730#-58# 如果列值包含#,则计算#的数量并替换这些现有值 我的输出应该是 Column_1 3 4 3 56 2 一种方法是使用SQLREPLACE函数,将包含的列的原始长度与删除所有的长度进行比较: SELECT CASE WHEN Column_1 LIKE '%#%' THEN CAST(LEN(Column_1) - LEN(REPLACE(Column_1, '#'

我有一个列,其中包含如下值:

Column_1
3
4
-94#30#56#
56
730#-58#
如果列值包含#,则计算#的数量并替换这些现有值

我的输出应该是

Column_1
3
4
3
56
2

一种方法是使用SQL
REPLACE
函数,将包含
列的原始长度与删除所有
的长度进行比较:

SELECT
    CASE WHEN Column_1 LIKE '%#%'
         THEN CAST(LEN(Column_1) - LEN(REPLACE(Column_1, '#', '')) AS VARCHAR(100))
         ELSE Column_1 END AS Column_1
FROM yourTable;

我使用了SQL Server语法,需要针对其他数据库调整查询。

请尝试下面的查询

SELECT 
    CASE WHEN (len(Column_1) - len(replace(Column_1,'#',''))) > 0 
    THEN 
        (len(Column_1) - len(replace(Column_1,'#','')))  
    ELSE 
        Column_1 
    END 
FROM @tbl

你的数据库是什么?数据库是SparkSQL