2017-01-26 3 views
0

Я пытаюсь вернуть результаты, где длина символа равна >= 6. Однако запрос (ниже) возвращает результаты с длиной текста менее 6.SQL Squirrel - возвращаемые результаты по длине поля

select a.column1, b.column2, b.column3, b.column4, b.column5 
from test.table a 
    inner join test.table b 
      on a.row= b.row 
where char_length(b.column3) >= 6 

Результаты для b.column3 включают в себя:

Four 
Four 
Four 
Five 
Five 
SixSix 
SixSix 
SixSix 

Когда все, что я хочу, это результаты с длиной символов больше или равно 6.

Спасибо!

+0

Что такое базовая база данных? Что вы видите, если добавить в список выбора char_length (b.column3)? Каков тип данных b.column3? –

+1

какая база данных вы используете? – Zeus

+0

@ AlexK.Adding char_length (b.column3) в списке выбора показывает char_length 6 рядом с текстовыми полями, которые должны состоять только из четырех символов. Простите меня, если это не тот ответ, который вы ищете, но данные хранятся в нескольких местах. AS400 и SQL-сервер. – scareware

ответ

1

Я уверен, что ваш b.column3 - столбец char; если это так, все значения в этом столбце заполняются пустым пространством, поэтому все значения имеют ту же длину, что и длина столбца. Вы должны trim значения для того, чтобы проверить их реальную длину:

select a.column1, b.column2, trim(b.column3) column3, b.column4, b.column5 
from test.table a 
inner join test.table b 
on a.row= b.row 
where char_length(trim(b.column3)) >= 6 

Обратите внимание, что функция trim зависит от того, СУБД вы используете Doesnt то SQL Server»есть, вы должны использовать RTRIM вместо этого, если это так ,

Смежные вопросы