我正在尝试编写一个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
答案 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;