Ответ 1
Это будет захватывать записи со строками (в столбце fieldName) длиной 10 символов:
select * from table where length(fieldName)=10
Я пытаюсь выяснить, как написать инструкцию SQL, которая будет захватывать поля, длина которых не должна содержать 12 символов. Я хочу только захватить строку, если она составляет 10 символов.
Какую функцию можно сделать в DB2?
Я понял, что это будет что-то вроде этого, но я ничего не могу найти на нем. select * from table where not length(fieldName, 12)
Это будет захватывать записи со строками (в столбце fieldName) длиной 10 символов:
select * from table where length(fieldName)=10
Из аналогичного вопроса DB2 - найдите и сравните длину значения в поле таблицы - добавьте RTRIM, поскольку LENGTH будет возвращать длину определения столбца. Это должно быть правильно:
select * from table where length(RTRIM(fieldName))=10
ОБНОВЛЕНИЕ 27.5.2019: возможно, в более старых версиях db2 функция LENGTH вернула длину определения столбца. На db2 10.5 я попробовал функцию, и она возвращает длину данных, а не длину определения столбца:
select fieldname
, length(fieldName) len_only
, length(RTRIM(fieldName)) len_rtrim
from (values (cast('1234567890 ' as varchar(30)) ))
as tab(fieldName)
FIELDNAME LEN_ONLY LEN_RTRIM
------------------------------ ----------- -----------
1234567890 12 10
Можно проверить это, используя этот термин:
where length(fieldName)!=length(rtrim(fieldName))
В основном мы пишем ниже оператор select * из таблицы, где length (ltrim (rtrim (field))) = 10;