我有一个 SQL 列,它是一个包含 100 个 'Y' 或 'N' 字符的字符串。例如:
YYNYNYYNNNYYNY...
最简单的方法是如何获取每行中所有 'Y' 符号的计数。
这段代码适用于特定情况,当你有一个布尔值时,它会回答“有多少非N的元素?”。
SELECT LEN(REPLACE(col, 'N', ''))
如果在另一种情况下,您实际上是要计算给定字符串中某个特定字符(例如 'Y')的出现次数,请使用以下代码:
SELECT LEN(col) - LEN(REPLACE(col, 'Y', ''))
SELECT LEN(REPLACE(myColumn, 'N', ''))
FROM ...
每次都能给我准确的结果...
这是在我的条纹范围内...
黄色,黄色,黄色,黄色,黄色,黄色,黑色,黄色,黄色,红色,黄色,黄色,黄色,黑色
SELECT (LEN(Stripes) - LEN(REPLACE(Stripes, 'Red', ''))) / LEN('Red')
FROM t_Contacts
DECLARE @StringToFind VARCHAR(100) = "Text To Count"
SELECT (LEN([Field To Search]) - LEN(REPLACE([Field To Search],@StringToFind,'')))/COALESCE(NULLIF(LEN(@StringToFind), 0), 1) --protect division from zero
FROM [Table To Search]
LEN(@StringToFind)
。 - Jamie Kitson@StringToFind
永远不会为 null 或空。 - Jamie KitsonDATALENGTH
。保持简单。 - Jamie Kitson这将返回N出现的次数
select ColumnName, LEN(ColumnName)- LEN(REPLACE(ColumnName, 'N', ''))
from Table
SELECT REGEXP_COUNT(COLUMN_NAME,'CONDITION') FROM TABLE_NAME
SELECT
LEN(REPLACE(ColumnName, 'N', '')) as NumberOfYs
FROM
SomeTable
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: VIKRAM JAIN
-- Create date: 20 MARCH 2019
-- Description: Count char from string
-- =============================================
create FUNCTION vj_count_char_from_string
(
@string nvarchar(500),
@find_char char(1)
)
RETURNS integer
AS
BEGIN
-- Declare the return variable here
DECLARE @total_char int; DECLARE @position INT;
SET @total_char=0; set @position = 1;
-- Add the T-SQL statements to compute the return value here
if LEN(@string)>0
BEGIN
WHILE @position <= LEN(@string) -1
BEGIN
if SUBSTRING(@string, @position, 1) = @find_char
BEGIN
SET @total_char+= 1;
END
SET @position+= 1;
END
END;
-- Return the result of the function
RETURN @total_char;
END
GO
试一下这个
declare @v varchar(250) = 'test.a,1 ;hheuw-20;'
-- LF ;
select len(replace(@v,';','11'))-len(@v)
试试这个:
SELECT COUNT(DECODE(SUBSTR(UPPER(:main_string),rownum,LENGTH(:search_char)),UPPER(:search_char),1)) search_char_count
FROM DUAL
connect by rownum <= length(:main_string);
它确定主字符串中单个字符出现的次数以及子字符串出现的次数。