是否可以编辑表定义以在输入时自动修剪所有尾随空格的条目?
或者这会更有效/更容易/通常在提交条目的代码中完成吗?
答案 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指定为唯一索引,则应该抛出异常,因为索引值重复。