客户端数据库正在使用Text字段,我正在使用nvarchar

时间:2013-05-16 07:55:31

标签: sql-server ssms-2012

Need to convert Text field to Varchar temporarily so that I can pass to a stored procedure

有关

我已经尝试了演员,但我仍然得到了一个对我的系统造成严重破坏的幸存CRLF。我无法改变客户端上的任何内容,我甚至无法创建功能。我并不是要在客户端改变任何东西,所以这一切都很好。

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

据我可以查询数据库是SQL Server 11.0.2100

1 个答案:

答案 0 :(得分: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)