Shreevidya S.R Ответов: 1

Как получить количество конкретных символов в ntext типе данных с помощью SQL


У меня есть столбец типа данных nText и значения с символами in и out соответственно. Нужно подсчитать количество входов и выходов.
Пример: 1-я строка содержит 9:00:in(A111),11:00:out(A111),.......
И 2-й ряд так далее....

Что я уже пробовал:

Попытался с литья (в nvarchar).

Richard Deeming

ntext, text и image (Transact-SQL) - SQL Server | Microsoft Docs[^]
Важно! ntext, text, и image типы данных будут удалены в будущей версии SQL Server. Избегайте использования этих типов данных в новых разработках и планируйте изменять приложения, которые в настоящее время их используют. Воспользуйся nvarchar(max), varchar(max), и varbinary(max) вместо.

Эти типы устарели с 2005 года. Сколько лет приложению, над которым вы работаете?!

Jörgen Andersson

Что это за база данных и версия?

1 Ответов

Рейтинг:
1

CHill60

Это очень плохая конструкция. Каждый вход/выход должен быть отдельной строкой с отдельным столбцом для даты.

Однако, чтобы ответить на ваш вопрос..
Вычислите длину данных и длину данных после замены "in" на ". Вычтите один из другого, а затем скорректируйте количество замененных символов.

Например, данные '09:00:in(A111),11:00:out(A111),12:00:in(A111),13:00:out(A111)'
Длина данных составляет 61
Заменить 'in' на '09:00:(A111),11:00:out(A111),12:00:(A111),13:00:out(A111)'
Длина его составляет 57
61 - 57 = 4
Мы заменили 2 символа, так что разделите на 2 = 2 = количество раз, когда "in" было в исходных данных
Для 'out' мы получаем 61 - 55 = 6
Разделите на 3 (длина "out"), чтобы получить 2 раза "out", появившиеся в исходных данных

Edit: если вы настаиваете на сохранении типа столбца ntext (не используйте DDL для изменения типа столбца, не пытайтесь "привести" его), вам понадобится функция "datalength", а не функция len ().