Как узнать количество вхождений определенного символа в строку с помощью sql?

Как узнать количество вхождений определенного символа в строку с помощью sql?

Пример: я хочу узнать, сколько раз буква «d» встречается в этой строке.

declare @string varchar(100)
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa'

Какая база данных? Возможно, MySQL?

Mark Brady 13.11.2008 19:19

Пожалуйста, дайте этому более информативное название, вы увидите лучшие результаты.

Jeff 13.11.2008 19:19

Ответ, вероятно, будет зависеть от конкретной базы данных, поэтому, пожалуйста, расскажите всем, какую базу данных вы используете.

matt b 13.11.2008 19:24
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
28
3
55 797
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ну вот:

declare @string varchar(100)
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa'
SELECT LEN(@string) - LEN(REPLACE(@string, 'd', '')) AS D_Count

Симпатично, я думал об итерации с charindex, мне это намного больше нравится.

vfilby 13.11.2008 19:22

Я согласен с vfilby и могу подтвердить, что этот код работает в SQL Server 2005 и 2008.

xsl 13.11.2008 19:24

Я пользователь MySql. и определенно не гуру. Что было бы эквивалентом D_Count в MySQL?

J.J. 13.11.2008 19:38

D_Count - это просто псевдоним для столбца. я не знаю, как вы это установили в MySql

Mladen Prajdic 13.11.2008 19:42

Вам также следует разделить на длину то, что вы ищете. Этот сценарий работает, потому что "d" состоит только из одного символа. Если бы вы искали «как», вам пришлось бы разделить ответ на два.

Rob Farley 11.03.2010 04:27

Sybase ASE (по крайней мере, 15.7) требует str_replace вместо replace и null вместо символа замены.

Tiggyboo 28.03.2018 22:44

Если вы хотите сделать его немного более общим, вам следует разделить его на длину того, что вы ищете. Нравится:

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. И принцип будет работать в любой базе данных, вам просто нужно найти эквивалентные функции.

Rob Farley 11.03.2010 04:34

Для всех динозавров Sybase ASE 15 вам нужно будет заменить '' на null, т.е.

SELECT LEN(@string) - LEN(REPLACE(@string, 'd', null)) AS D_Count

Другие вопросы по теме