0

关于需要临时将文本字段转换为 Varchar 以便我可以传递给存储过程

我试过演员表,但我仍然得到一个幸存的 CRLF,它对我的​​系统造成严重破坏。我无法更改客户端上的任何内容,我什至无法创建函数。我不打算在客户端改变任何东西,所以这一切都很好。

作为 SELECT FROM 脚本的一部分,我有没有办法从文本字段中删除任何和所有 CRLF、Tabulator 和其他类似的 ascii 代码?

据我所知,数据库是 SQL Server 11.0.2100

4

1 回答 1

1

如果您考虑替换/删除较小的特殊字符集,则可以使用嵌套REPLACE()在您的SELECT

-- preparation of the example
CREATE TABLE #tt (id int identity (1,1), col text)
GO
INSERT INTO #tt (col) VALUES (N'this is a text
multiline
3rd line')
GO
-- run of the example
SELECT REPLACE(REPLACE(REPLACE(CAST(col as varchar(MAX)) ,
    CHAR(9), '<9>'),    -- replace '<9>' for '' to achieve removal
    CHAR(10), '<10>'),  
    CHAR(13), '<13>') AS NewText
    FROM #tt

--cleanup
--DROP TABLE #tt

输出:

(1 row(s) affected)
NewText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
this is a text<13><10>multiline<13><10>3rd line

(1 row(s) affected)
于 2013-05-17T02:08:54.297 回答