Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-删除特殊字符_Sql_Sql Server_Tsql - Fatal编程技术网

SQL Server-删除特殊字符

SQL Server-删除特殊字符,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一些特殊的unicode字符,比如子弹•和方块■在表格中。当我选择时,我想删除特殊字符,但仍然返回文本的其余部分 有办法做到这一点吗?根据此(存档的)Microsoft支持问题: 这可能会有所帮助。您可以使用SQL执行此操作,或者构建一个CLR方法并将其导入SQL server实例以进行确定。无论哪种方式,您都需要某种标量函数来逐个字符进行比较 尝试使用此功能。以下代码返回仅由Unicode字符代码范围组成的文本;在这种情况下,从0x0020(空格字符)到0x007E(tilde字符),其余

我有一些特殊的unicode字符,比如子弹
和方块
在表格中。当我选择时,我想删除特殊字符,但仍然返回文本的其余部分

有办法做到这一点吗?

根据此(存档的)Microsoft支持问题:


这可能会有所帮助。您可以使用SQL执行此操作,或者构建一个CLR方法并将其导入SQL server实例以进行确定。无论哪种方式,您都需要某种标量函数来逐个字符进行比较


尝试使用此功能。以下代码返回仅由Unicode字符代码范围组成的文本;在这种情况下,从
0x0020(空格字符)
0x007E(tilde字符)
,其余部分被忽略。您可以定义一个或多个字符范围来扩展此函数的有效字符。可以找到Unicode字符列表,包括其代码,例如

使用这种疯狂的字符组合调用的函数意外返回

'Test of Unicode'

“ignore”是指不在结果中返回它们,还是构造忽略它们的WHERE子句?我想返回文本,但删除characters@user441365:如果知道确切/特定字符,您可以使用
replace
标量函数。@Mark Wilkins是的,但我正在寻找更一般的方法。也许您可以从以下问题修改Mastros函数:@daemon\u x如何调用此函数?@Andriy-我提到了范围是从Unicode的字符码32(0x0020-空格)到126(0x007E-tilde),我知道我可以选择一个更好的名字;不是
BasicLatinOnly
有点让人困惑。但是您可以根据需要简单地修改范围。例如,如果您只想获取整个阿拉伯语脚本,那么您可以将范围设置为1536(0x600-标点符号)到1791(0x6FF-字母Heh,带倒V),这样您就可以将@BufferChar介于32和126之间的行
更改为
如果@BufferChar介于1536和1791之间的行
@Andriy-或者您可以选择多个组,例如,我自己的基本拉丁语集
:)
,如果(@BufferChar介于32和126之间)或(@BufferChar介于1536和1791之间),那么整个阿拉伯文脚本将是这样的
对不起,我现在可以看出,我错过了你回答中已经解释过的那部分。谢谢你抽出时间再次向我解释。@Andrey-不客气;这是相当误导,所以我修改了一点。谢谢你的提示;)看起来OP想要去掉特殊字符,所以使用Unicode字符串并不是限制因素
SELECT dbo.CharRangeOnly (N'•■乕ขTeᶕst໙ ཙof  β俼 ޠ➽Unᦗic៘ode✸ᾦ')
'Test of Unicode'