Как узнать количество вхождений определенного символа в строку с помощью sql?
Пример: я хочу узнать, сколько раз буква «d» встречается в этой строке.
declare @string varchar(100)
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa'
Пожалуйста, дайте этому более информативное название, вы увидите лучшие результаты.
Ответ, вероятно, будет зависеть от конкретной базы данных, поэтому, пожалуйста, расскажите всем, какую базу данных вы используете.


Ну вот:
declare @string varchar(100)
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa'
SELECT LEN(@string) - LEN(REPLACE(@string, 'd', '')) AS D_Count
Симпатично, я думал об итерации с charindex, мне это намного больше нравится.
Я согласен с vfilby и могу подтвердить, что этот код работает в SQL Server 2005 и 2008.
Я пользователь MySql. и определенно не гуру. Что было бы эквивалентом D_Count в MySQL?
D_Count - это просто псевдоним для столбца. я не знаю, как вы это установили в MySql
Вам также следует разделить на длину то, что вы ищете. Этот сценарий работает, потому что "d" состоит только из одного символа. Если бы вы искали «как», вам пришлось бы разделить ответ на два.
Sybase ASE (по крайней мере, 15.7) требует str_replace вместо replace и null вместо символа замены.
Если вы хотите сделать его немного более общим, вам следует разделить его на длину того, что вы ищете. Нравится:
declare @searchstring varchar(10);
set @searchstring = 'Rob';
select original_string,
(len(orginal_string) - len(replace(original_string, @searchstring, ''))
/ len(@searchstring)
from someTable;
Это потому, что каждый раз, когда вы находите «Роб», вы удаляете трех персонажей. Итак, когда вы удалите шесть символов, вы дважды найдете «Роб».
Это означает, что вы запрашиваете таблицу с именем someTable, в которой есть столбец с именем original_string. И принцип будет работать в любой базе данных, вам просто нужно найти эквивалентные функции.
Для всех динозавров Sybase ASE 15 вам нужно будет заменить '' на null, т.е.
SELECT LEN(@string) - LEN(REPLACE(@string, 'd', null)) AS D_Count
Какая база данных? Возможно, MySQL?