Как посчитать количество символов sql
Перейти к содержимому

Как посчитать количество символов sql

  • автор:

Как установить конкретное количество символов в SQL?

Всем привет. Изучаю SQL, а именно — создание таблиц. Как установить ограничение на числовое поле, я информацию нашёл, получилось: rating – рейтинг, вещественное число. Принимает положительные значения от 0 до 10. rating FLOAT, CHECK (0
Отслеживать
задан 11 янв в 19:47
61ack63rry 61ack63rry
35 6 6 бронзовых знаков
Символьное поле, содержащее ровно 2 символа. CHAR(2) NOT NULL
11 янв в 19:56

+ в разных СУБД свои строковые типы и наверное вам стоит как раз определиться с СУБД вначале и почитать внимательно про типы данных

11 янв в 20:03
check (length (country)=2)
11 янв в 20:07

@0xdb Не подойдёт. Если использовать CHAR(2), то на любое NOT NULL значение вернётся 2. И VARCHAR(2) не поможет, если пробел введён как часть значения, а не добавлен как заполнитель. А если поле не объявить NOT NULL — то и NULL тоже пройдёт эту проверку. Так что и необходимо NOT NULL, и в твой CHECK нужно добавить TRIM(). PS. С другой стороны, задание предполагает, что пробел — легитимный и значащий символ. Ибо в задании никаких ограничений в этом смысле не имеется.

11 янв в 20:19

@Akina Ну вот я попробовал и ваш метод. Вставляю в поле не 2, а 1 символ, не бьёт никакой ошибки, хотя должно, насколько я понимаю.

Подсчет символов ‘Y’ в строке SQL: эффективный метод

Приведенный запрос вычисляет число вхождений символа ‘X’ в поле columnName. Сделать это помогает вычитание из общей длины строки длины строки после удаления всех ‘X’.

Разбор метода

Давайте подробнее разберем процесс подсчета символов в SQL, основанный на вышеупомянутом запросе:

LEN(columnName) возвращает длину исходной строки, в то время как LEN(REPLACE(columnName, ‘X’, »)) дает её длину после удаления символа ‘X’. Разница этих длин и является искомым числом вхождений символа ‘X’.

Обработка значений Null

NULL значения могут сыграть злую шутку, нарушив корректность подсчетов. Для избежания такой ситуации используйте COALESCE для обработки возможных пустых значений:

LEN (Transact-SQL)

Возвращает количество символов указанного строкового выражения, исключая конечные пробелы.

Получить число байтов, используемых для представления выражения, можно с помощью функции DATALENGTH.

Синтаксис

LEN ( string_expression ) 

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

string_expression
Оцениваемое строковое выражение. Аргумент string_expression может быть константой, переменной или столбцом символьных или двоичных данных.

Типы возвращаемых данных

bigint, если expression имеет тип данных varchar(max), nvarchar(max) или varbinary(max); в противном случае int.

Если используются параметры сортировки SC, то возвращаемое целое значение рассматривает суррогатные пары Юникода UTF-16 как один символ. Дополнительные сведения см. в статье Collation and Unicode Support.

Замечания

Функция LEN исключает конечные пробелы. Если это может создать проблемы, рекомендуется использовать функцию DATALENGTH (Transact-SQL), которая не усекает строку. При обработке строки Юникода DATALENGTH возвращает число, которое, возможно, не будет равно количеству символов. В приведенном ниже примере демонстрируется работа функций LEN и DATALENGTH с конечным пробелом.

 DECLARE @v1 VARCHAR(40), @v2 NVARCHAR(40); SELECT @v1 = 'Test of 22 characters ', @v2 = 'Test of 22 characters '; SELECT LEN(@v1) AS [VARCHAR LEN] , DATALENGTH(@v1) AS [VARCHAR DATALENGTH]; SELECT LEN(@v2) AS [NVARCHAR LEN], DATALENGTH(@v2) AS [NVARCHAR DATALENGTH]; 

Функция LEN возвращает количество символов, закодированных в определенное строковое выражение, а функция DATALENGTH — размер данных в байтах для определенного строкового выражения. Эти выходные данные могут быть разными в зависимости от типа данных и типа кодировки, используемой в столбце. Дополнительные сведения об отличиях типов кодировок, используемых для хранения данных, см. в статье Collation and Unicode Support (Поддержка параметров сортировки и Юникода).

Примеры

Следующий пример выбирает число символов и данные по имени людей FirstName , живущих в Australia . В примере используется база данных AdventureWorks.

SELECT LEN(FirstName) AS Length, FirstName, LastName FROM Sales.vIndividualCustomer WHERE CountryRegionName = 'Australia'; GO 

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

В приведенном ниже примере возвращается число символов в столбце FirstName , а также первое и последнее имена сотрудников в Australia .

USE AdventureWorks2022 GO SELECT DISTINCT LEN(FirstName) AS FNameLength, FirstName, LastName FROM dbo.DimEmployee AS e INNER JOIN dbo.DimGeography AS g ON e.SalesTerritoryKey = g.SalesTerritoryKey WHERE EnglishCountryRegionName = 'Australia'; 
FNameLength FirstName LastName ----------- --------- --------------- 4 Lynn Tsoflias 

LENGTH — подсчет количества символов в строке

Функция LENGTH используется для подсчета количества символов в строках.

SELECT LENGTH(поле) FROM `имя_таблицы`; -- возможно применение операторов

В данном примере при выборке из таблицы создается дополнительное поле, которое содержит длину поля >name :

SELECT id, name, LENGTH(name) as length FROM `users`;

В данном примере с помощью условия WHERE выбираются только те записи, в которых длина поля name больше или равна 7 :

SELECT *, LENGTH(name) as length FROM users WHERE LENGTH(name)>=7;

Конечно, не обязательно делать поле length , чтобы применить функцию LENGTH в условии:

SELECT * FROM users WHERE LENGTH(name)>=7;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *