如何防止在mySQL中输入包含空格的文本

问题描述:

偶尔会发生用户在文本列中错误地输入具有尾部空格的文本,这很难在视觉上进行识别。如果此文本字段必须与不存在尾部空格的另一个文本字段进行匹配,这可能会稍后导致问题。是否有可能在mySQL强制执行文本字符串不能包含某个字符(在这种情况下,空间)?如何防止在mySQL中输入包含空格的文本

感谢您的反馈!

+0

这不是MySQL的工作。你应该从一开始就插入“干净”的数据,这意味着在你的客户端代码中删除空间,然后它可以在任何地方靠近mysql。 –

+0

my-sql是一个rathr随机混杂不同的技术...所以检查确切的版本和引擎....有两种SQL技术可以帮助:BEFORE-UPDATE-OR-INSERT TRIGGER可以透明地修复数据通过您的规则和CHECK CONSTRAINT可以阻止插入无效数据。如果你的数据库支持任何这些 - 你可以使用它。我可以在Firebird SQL中编写代码,但不能在MYSQL中编写代码,所以不能作为答案 –

+0

Marc说什么。 – Drew

有许多的方式来实现你想要什么:

  1. 检查用户输入您的应用程序,如果它包含空格拒绝它。如果您的主要担心是用户输入的质量,那么这可能是实现这一目标的最佳方式。

  2. 您可以从应用程序逻辑或使用sql中的用户输入中删除空格(或刚刚开始/结尾的空格)。

如果您选择删除sql中用户输入的所有空格,请使用replace() function。如果您只想删除开始和结尾空格,请使用trim() function来获得理想的结果。

+0

在应用程序层执行此操作是执行此操作的最佳方法。在数据库级别执行此操作会导致沮丧,尤其是在某些原因您需要*空间的情况下。 – tadman

下使用mysql函数的简单方式是基于TRIM()

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