自动修剪数据库条目?

时间:2009-10-15 09:10:22

标签: sql database database-design

是否可以编辑表定义以在输入时自动修剪所有尾随空格的条目?

或者这会更有效/更容易/通常在提交条目的代码中完成吗?

4 个答案:

答案 0 :(得分:7)

如果您在SQL Server中工作,您可以自动执行此操作,但只有在您确定且经过适当考虑时才应该这样做。 ANSI_PADDING在SQL中决定是否修剪正在插入的值的尾部空格。该设置在创建表时应用,之后不会更改,并且该设置适用于varchar,但不适用于nvarchar。

显示差异的测试脚本如下:

set ansi_padding on
create table foo (myID int identity, myString varchar(50))
insert into foo values ('abcd      ')
select datalength(mystring) from foo

drop table foo
set ansi_padding off
create table foo (myID int identity, myString varchar(50))
insert into foo values ('abcd      ')
select datalength(mystring) from foo

在第一个表上,数据长度自插入空格后返回10,在第二个示例中,它们在插入时被修剪。

我个人更喜欢代码控制需要完成的工作,而不是将其留给设置,但我包含的示例表明,如果需要,可以在数据库级别完成。

答案 1 :(得分:2)

您可以使用trigger - 取决于您正在使用的数据库软件。

答案 2 :(得分:0)

存储过程或客户端代码或触发器等

SET ANSI_PADDING will always be ON in future,对于某些索引也必须为ON。

答案 3 :(得分:0)

您可以使用Trigger INSTEAD OF INSERT部分。 INSTEAD OF INSERT,您可以修剪值并尝试插入它。如果将field指定为唯一索引,则应该抛出异常,因为索引值重复。