相关疑难解决方法(0)

Sql Server - 从数据中删除结束字符串字符"\ 0"

我在数据库(SQL Server 2005)中有一个列,其末尾的数据为"\ 0".在SQL Server中查询时,此字符不可见,并且"似乎"不存在.当我查看我的C#代码时,角色就在那里.此字符在我们的网站上导致错误,我们需要从所有受影响的行中删除它.

是否有一个SQL查询我可以编写以轻松从受影响的所有记录中删除此字符?我可以获取所有受影响的记录,但我没有办法将记录更新为新值(没有"\ 0").

更新:这似乎工作:

Select * from TABLE
where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0
Run Code Online (Sandbox Code Playgroud)

所以:

Update TABLE
SET naughtyField = SUBSTRING(naughtyField, 1, LEN(naughtyField) - 1)
where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0
Run Code Online (Sandbox Code Playgroud)

sql database sql-server sql-server-2005

7
推荐指数
2
解决办法
1万
查看次数

在sql中替换字符串中的空字符

我需要替换sql字符串中的空字符,我似乎无法找到正确的命令来实现这一点.我使用了replace(myString,'\ 0',''),但这似乎不起作用,任何帮助都会很棒

sql-server-2005

6
推荐指数
3
解决办法
3万
查看次数

如何从SQL Server中的VARCHAR()中删除尾随CHAR(0)?

在Microsoft SQL Server中,我尝试varchar()通过存储varbinary()到上下文信息将字符串传递给触发器.

通过CONTEXT_INFO自身传递数据不是问题.

我的问题是,我必须转换varchar()varbinary()能够通过数据上下文信息,并转换回varchar()产生拖尾CHAR(0)的人物,我不能妥善处理了.

我试图找到CHAR(0)to substring 的第一个索引到一个新的正确的字符串,但没有成功.其他内置函数也无法CHAR(0)正确处理字符.

但:

  • LEN() =>总是返回128,
  • CHARINDEX()=>找不到CHAR(0),
  • RTRIM()=>不修剪不可打印的CHAR(0)字符,
  • REPLACE()=>不替换CHAR(0),
  • 执行时的异常:

    SELECT * FROM (SELECT (@textbin) AS [blabla]) AS [result] FOR XML
    
    Run Code Online (Sandbox Code Playgroud)

特别是我需要传递的字符串,作为纯文本,没有尾随空格/ CHAR(0)将字符串放到xml.

PS.:xml中的BINARY BASE64表示不是我可以使用的选项!

这是一个测试SQL脚本

DECLARE @text VARCHAR(128)
DECLARE @bintext BINARY(128)
DECLARE @textbin VARCHAR(128)

SET @text = 'test'
--SET @text = 'test' + CHAR(0)
--SET @text = …
Run Code Online (Sandbox Code Playgroud)

xml sql sql-server

5
推荐指数
1
解决办法
1444
查看次数

SQL Server NText 字段限制为 43,679 个字符?

我使用 SQL Server 数据库来存储很长的 Unicode 字符串。该字段来自类型“ntext”,理论上应限制为 2^30 个 Unicode 字符。

MSDN 文档

正文

可变长度 Unicode 数据,最大字符串长度为 2^30 - 1 (1,073,741,823) 字节。存储大小(以字节为单位)是输入的字符串长度的两倍。ntext 的 ISO 同义词是国家文本。

我做了这个测试:

  1. 生成 50,000 个字符的字符串。

  2. 运行更新 SQL 语句

    UPDATE [table] SET Response='... 50,000 个字符串...' WHERE ID='593BCBC0-EC1E-4850-93B0-3A9A9EB83123'

  3. 检查结果 - 最后实际存储在字段中的内容。

结果是字段 [Response]包含43,679 个字符。字符串末尾的所有字符都被丢弃了。

为什么会发生这种情况?我该如何解决这个问题?

如果这真的是这种数据类型(ntext)的容量限制,还有哪一种数据类型可以存储更长的Unicode字符串?

sql sql-server ntext sql-update

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql ×3

sql-server ×3

sql-server-2005 ×2

database ×1

ntext ×1

sql-update ×1

xml ×1