2016-09-22 10 views
0

Иногда случается, что пользователи ошибочно вводят текст с конечным пространством в текстовом столбце, который трудно заметить визуально. Это может впоследствии вызвать проблемы, когда это текстовое поле должно быть сопоставлено с другим, где конечное пространство отсутствует. Возможно ли в mySQL обеспечить, чтобы текстовая строка не содержала определенного символа (пробел в этом случае)?Как предотвратить ввод текста, содержащего пробелы в mySQL

Благодарен за отзыв!

+0

это не работа в MySQL. вы должны вставлять «чистые» данные из get-go, что означает удаление пространства в вашем клиентском коде, прежде чем он когда-либо приближается к mysql. –

+0

my-sql - это рат-хаус разных технологий ... Итак, проверьте точную версию и движки ... Есть две технологии SQL, которые могут помочь: ПЕРЕДАЧАТЬ-ИЛИ ВСТАВИТЬ ТРИГГЕРЫ, которые могут прозрачно фиксировать данные по вашим правилам и CHECK CONSTRAINT, которые могут блокировать вставку недействительных данных. Если ваша база данных поддерживает любой из них - вы можете ее использовать. Я мог бы кодировать как в Firebird SQL, но не в MYSQL, так что не стал бы отвечать на него –

+0

Что сказал Марк. – Drew

ответ

2

Есть несколько способов, чтобы добиться того, чего вы хотите:

  1. Проверьте введенные пользователем в приложении, и отклонить его, если он содержит пробел. Если ваше основное беспокойство - это качество входных данных пользователя, то, вероятно, это лучший способ сделать это.

  2. Вы можете удалить пробелы (или просто начальные/конечные пробелы) с пользовательского ввода либо в логике приложения, либо с помощью sql.

Если вы выберете для удаления всех пробелов из пользовательского ввода в SQL, а затем использовать replace() function. Если вы просто хотите удалить начальные и конечные пробелы, используйте trim() function для достижения желаемых результатов.

+0

Выполнение этого на прикладном уровне - лучший способ сделать это. Выполнение этого на уровне базы данных приводит к разочарованию, особенно когда по какой-то причине вам нужно * пространство там. – tadman

0

Используя функцию MySQL простой способ основан на обшивкой()

select 
    trim(' try with trim ') 
, length (trim(' try with trim ')) 
, length (' try with trim ') 
from dual ;