[symbols] Как подсчитать экземпляры символов в столбце SQL. Количество символов в поле sql


Как найти длину строки в SQL SERVER? Функция LEN() с примером

Подле дурака всегда найдется жулик (О. Бальзак).

Вы можете использовать функцию LEN (), чтобы найти длину строкового значения в SQL Server, например, LEN (emp_name) даст вам длину, хранящуюся в строке emp_name . Помните, что это отличается от длины фактической длины, которую вы указали при создании таблицы, например emp_name VARCHAR (60) . Вам пример, у вас есть столбец под названием emp_name VARCHAR (60), это означает, что длина этой колонки 60 символов, он может содержать имена с максимум 60 символов длиной, но не все имена 60 символов. На этом уроке SQL Server, я научу вас как использовать функцию LEN() в SQL, чтобы выяснить фактическую длину или количество символов в VARCHAR или поле CHAR.

Функция LEN () с примером в SQL SERVER 2014

Если вы хотите узнать все имена, которые меньше, чем 10 символов, вы можете использовать функцию LEN(), как следующий запрос SQL:

SELECT emp_name from Employee where LEN(emp_name) < 10

 

В данном примере возвратит всех сотрудников, имя которого меньше, чем 10 символов. Функция LEN() является очень полезной, она принимает имя столбца и возвращает длину строки.

Давайте посмотрим еще пару примеров функции LEN () в SQL Server 2008 и 2014:

1) Написать запрос SQL, чтобы узнать всех сотрудников, чье имя больше, чем 10 символов, но менее 50 символов

SELECT name from Employee where LEN(name) > 10 and LEN(name) < 50

 

Можно также применить условную логику с помощью CASE сделать требуемое, основанное на различной длине, например, вы можете сократить длинное название с добавлением “…” в конце строки.

SELECT CASE WHEN LEN (emp_name) <= 50 THEN emp_name ELSE LEFT(emp_name, 60) + '...' END As emp_name FROM Employee

 

Поэтому не забывайте используя функцию LEN () в SQL Server, вы узнаете длину любой строки, хранящейся в колонке VARCHAR. Он не должен быть VARCHAR, но функция LEN() принимает текстовое значение, которое означает, что он может быть CHAR, VARCHAR, NCHAR или NVARCHAR.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 141

Если статья понравилась, то поделитесь ей в социальных сетях:

andreyex.ru

[symbols] Как подсчитать экземпляры символов в столбце SQL [count] [tsql]

если ms sql

SELECT LEN(REPLACE(myColumn, 'N', '')) FROM ...

Это давало мне точные результаты каждый раз ...

Это в моем поле Полосы ... Желтый, Желтый, Желтый, Желтый, Желтый, Желтый, Черный, Желтый, Желтый, Красный, Желтый, Желтый, Желтый, Черный

  • 11 Желтые
  • 2 Черный
  • 1 Красный
SELECT (LEN(Stripes) - LEN(REPLACE(Stripes, 'Red', ''))) / LEN('Red') FROM t_Contacts

Может быть, что-то вроде этого ...

SELECT LEN(REPLACE(ColumnName, 'N', '')) as NumberOfYs FROM SomeTable

попробуй это

declare @v varchar(250) = 'test.a,1 ;hheuw-20;' -- LF ; select len(replace(@v,';','11'))-len(@v)

Если вы хотите подсчитать количество экземпляров строк с более чем одним символом, вы можете либо использовать предыдущее решение с регулярным выражением, либо это решение использует STRING_SPLIT, который, как мне кажется, был представлен в SQL Server 2016. Также вам понадобится совместимость уровень 130 и выше.

ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130

,

--some data DECLARE @table TABLE (col varchar(500)) INSERT INTO @table SELECT 'whaCHAR(10)teverCHAR(10)whateverCHAR(10)' INSERT INTO @table SELECT 'whaCHAR(10)teverwhateverCHAR(10)' INSERT INTO @table SELECT 'whaCHAR(10)teverCHAR(10)whateverCHAR(10)~' --string to find DECLARE @string varchar(100) = 'CHAR(10)' --select SELECT col , (SELECT COUNT(*) - 1 FROM STRING_SPLIT (REPLACE(REPLACE(col, '~', ''), 'CHAR(10)', '~'), '~')) AS 'NumberOfBreaks' FROM @table

Вы также можете попробовать это

-- DECLARE field because your table type may be text DECLARE @mmRxClaim nvarchar(MAX) -- Getting Value from table SELECT top (1) @mmRxClaim = mRxClaim FROM RxClaim WHERE rxclaimid_PK =362 -- Main String Value SELECT @mmRxClaim AS MainStringValue -- Count Multiple Character for this number of space will be number of character SELECT LEN(@mmRxClaim) - LEN(REPLACE(@mmRxClaim, 'GS', ' ')) AS CountMultipleCharacter -- Count Single Character for this number of space will be one SELECT LEN(@mmRxClaim) - LEN(REPLACE(@mmRxClaim, 'G', '')) AS CountSingleCharacter

Вывод:

например, для вычисления экземпляров count символа (a) в столбце SQL -> name есть имя столбца '' (и в doblequote пусто, я заменяю no noecarecter @ '')

выберите len (name) - len (заменить (имя, 'a', '')) из TESTING

выберите len («YYNYYYYNNNYYNYY») - len (заменить («YYNYYYNNNNYYYYYY», 'y', ''))

code-examples.net

Выборка определенного количества символов в SQL запросе

Форум: "Начинающим";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2006.08.13;Скачать: [xml.tar.bz2];

Вниз

Выборка определенного количества символов в SQL запросе 
Константин_   (2006-07-26 10:30) [0]

Как выбрать определенное количество символов в sql запросе начиная с конца поля, например "123456" > "3456"С уважением.

ЮЮ ©   (2006-07-26 10:40) [1]

В MS SQL: RIGHT(<строка>, <количество>)У других серверов, наверняка, что-то найдется подобное.В стандарте, имхо, такого нет. Лишь SUBSTRING, т.е. подйдет, если количество симолов в значениях поля одинаковое и известное

Константин_   (2006-07-26 11:03) [2]

select cast(dogovor as char(3)) from pred.dbf where cast(dogovor as int)>1000В таком запросе получается выборка 3 символов с начала строки, а может его можно как то изменить?

Desdechado ©   (2006-07-26 11:31) [3]

Видимо, намек указать СУБД не понят.

ЮЮ ©   (2006-07-26 11:35) [4]

БД какая?

В таком запросе получается выборка 3 символов с начала строки, а может его можно как то изменить?

С начал строки, естественно, проблем нет, коль есть Substring()

Константин_   (2006-07-26 11:47) [5]

выборка производиться из талицы DBase IV при помощи компонента Query

ЮЮ ©   (2006-07-26 11:48) [6]

SELECT dogovor from pred.dbf where cast(dogovor as int) < 10000         /* 1 - 4х значные*.UNION ALLSELECT Substring(dogovor from 2 for 4) FROM pred.dbf  where cast(dogovor as int) BETWEEN 10000 AND 99999    /* для 5-начных*/UNION ALL... и так далее

З.Ы. зачем такие важные последнии символа слис со столь маловажными первыми в одом поле? Раздели, пока не поздно

ЮЮ ©   (2006-07-26 11:50) [7]

З.Ы. Как будешь различать договора 123456 и 213456 после такого запроса?

Константин_   (2006-07-26 11:52) [8]

Работа ведеться с водомерным счетчиком, а у него есть такая особенность перекручиваться... очень не хорошая.Спасибо за помощь.

Константин_   (2006-07-26 11:53) [9]

Поля договор взял из др. базы, что бы попробовать запрос... водомеров под рукой нет

ЮЮ ©   (2006-07-26 12:01) [10]

> а у него есть такая особенность перекручиваться... очень > не хорошая.

У него наверное всего 4 числа то и есть и для него естественно "перекручиваться", а вот откуда в базе появляются неестественные 5-е цифры?

Константин_   (2006-07-26 12:04) [11]

начальные показания 9985 последние показания 0010 в баз 10010

ЮЮ ©   (2006-07-26 12:20) [12]

Ну и откуда эта 1 в базе?

следующее показание будет 0100, а у тебя уже предыдущее 10010. Опять перекрутка нужна? Или пририсовка?

Может лучше оставлять как есть 0010?А при расчетах учитывать возможность "перекрутки"

Константин_   (2006-07-26 12:26) [13]

Можно было бы оставить... но прога уже в эксплуатации... недоглядел, теперь мучаюсь

Форум: "Начинающим";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2006.08.13;Скачать: [xml.tar.bz2];

Наверх

Память: 0.74 MBВремя: 0.112 c

www.delphimaster.net