如果insert包含某些char,则替换为不同的char

时间:2016-11-03 12:28:30

标签: sql sql-server tsql

Topic

我可以以某种方式拦截这个插页,以便' a'将被插入MyChar而不是' ['?

我可以编写一个触发器,在创建行之后进行更新,但这看起来很麻烦。有没有办法在插入点执行此操作?

注意:我无法更改发送到数据库的insert语句,因为这是由我控制之外的应用程序发送的。

编辑:道歉 - 这与Microsoft SQL Server(2008)

有关

1 个答案:

答案 0 :(得分:1)

Sql Server支持instead of insert triggers以及replace,这基本上只需要满足此要求:

CREATE TRIGGER Example_InsteadOfInsert ON Example
INSTEAD OF INSERT
AS

INSERT INTO Example (ID, MyChar)
SELECT ID, 
       REPLACE(MyChar, '[', 'a')
FROM inserted;

GO

如果要用多个替换替换多个字符,可以嵌套替换语句:

SELECT ID, 
       REPLACE(
               REPLACE(MyChar, '[', 'a')
               ,']', 'b')
FROM inserted;