使用以null结尾的字符串进行查询

时间:2018-05-08 06:39:48

标签: sql sql-server tsql

我正在尝试编写一个T-SQL脚本,以便将数据库的两个副本与 SQL Server公开了tablediff utility但我遇到了表格中文本字段的所有行的问题。

问题是存储在该文本字段上的所有字符串都是以空值终止的(如果我将它们导出到文本文件,那么在字符串的末尾实际上有一个空字符)和INSERT和{ {1}} UPDATE生成的查询都由于null终止符截断查询而失败。

有没有办法阻止生成的脚本失败?

更新

MSSQL为我正在尝试对齐的表生成的创建查询

tablediff

插入由SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TABTEST]( [Code] [varchar](50) NOT NULL, [Source] [text] NULL, CONSTRAINT [PrK_TABTEST] PRIMARY KEY CLUSTERED ( [Code] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO SET ANSI_PADDING OFF GO 生成的查询(请记住,在tablediff之后Source末尾没有看到的字符是ANSI NULL字符)

NOOP

1 个答案:

答案 0 :(得分:0)

CHAR(0)可能很讨厌...

我的建议是删除最后一个字符,LEN()将返回包含此0x0的字符。试试吧:

DECLARE @s VARCHAR(100)='test' + CHAR(0)

SELECT @s + 'extension' AS Result1,
       LEFT(@s,LEN(@s)-1) + 'extension' AS Result2;