используя отделку в операторе выбора - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть таблица, my_table, в которой есть поле my_field.myfield определяется как VARCHAR (7).Когда я делаю:

SELECT myfield 
  FROM my_table;

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

Я пытался:

SELECT TRIM(myfield)
  FROM my_table;

и несколько вариаций.Но вместо «abcd» я получаю «abcd».

Как мне избавиться от конечных пробелов?

Ответы [ 4 ]

1 голос
/ 08 ноября 2010

Как уже говорили другие:

  • обрезать пробелы перед тем, как данные поступают в базу данных ("Вычеркните пол ...);
  • убедитесь, что это на самом деле не столбец типа CHAR(7).

Кроме того, добавьте ограничение CHECK, чтобы не допускать замыкания пробелов («... устраните утечку»). Во время работы также предотвращайте пробелы в начале, пробелы истрока нулевой длины, например

CREATE TABLE my_table
(
 myfield VARCHAR(7) NOT NULL    
    CONSTRAINT myfield__whitespace
       CHECK (
              NOT (
                   myfield = ''
                   OR myfield LIKE ' %'
                   OR myfield LIKE '% '
                   OR myfield LIKE '%  %'
                  )
             )
);-
0 голосов
/ 08 ноября 2010

Столбцы VARCHAR не будут заполнять вставленную вами строку, то есть, если вы получаете 'ABCD', это то, что вы сохранили в базе данных.Обрежьте данные перед вставкой.

Убедитесь, что вы не используете тип данных CHAR, который будет дополнять ваши данные так, как вы предлагаете.В любом случае:

SELECT TRIM(myfield) FROM mytable; 

будет работать.

Убедитесь также, что вы не путаете способ, которым интерпретатор SQL добавляет символы заполнения для форматирования данных в виде таблицы с фактическим ответом.

0 голосов
/ 08 ноября 2010

Убедитесь, что вы не вставляете данные в этот столбец из поля CHAR (7).

0 голосов
/ 08 ноября 2010

Вам нужно обрезать свой результат при выборе, а не при вставке, например:

SELECT TRIM(myfield) FROM my_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...