首页 > 后端开发 > C++ > 如何从 SQL Server VARCHAR 列中删除不寻常的字符?

如何从 SQL Server VARCHAR 列中删除不寻常的字符?

Linda Hamilton
发布: 2025-01-11 09:03:45
原创
466 人浏览过

How to Remove Unusual Characters from a SQL Server VARCHAR Column?

从 SQL Server VARCHAR 列中删除异常字符

背景:

某些非标准字符,特别是带有变音符号的字符(例如带帽子的 a),存储在 SQL Server varchar 列中。此问题源于对.csv 数据源导入的控制有限。

解决方案:

方案一:使用 .NET 正则表达式

在 C# 中,您可以使用正则表达式来删除这些字符。可以使用 String.Replace 方法,如下所示:

<code class="language-csharp">Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);</code>
登录后复制

方案二:创建 SQL CLR 函数

由于 SQL Server 本身不支持正则表达式,因此可以创建一个 SQL CLR 函数。这需要:

  • 在 Visual Studio 中创建一个 .NET 类库项目
  • 使用正则表达式实现 Replace 函数
  • 构建项目并将程序集添加到 SQL Server 数据库
  • 创建一个包装 .NET 函数的 SQL CLR 函数

实现:

方案一:

<code class="language-csharp">Regex.Replace(inputString, @"[^\u0000-\u007F]", string.Empty);</code>
登录后复制

方案二:

  • 创建一个名为 StackOverflow 的 .NET 类,包含以下代码:
<code class="language-csharp">[SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true, Name = "RegexReplace")]
public static SqlString Replace(SqlString sqlInput, SqlString sqlPattern, SqlString sqlReplacement)
{
    string input = (sqlInput.IsNull) ? string.Empty : sqlInput.Value;
    string pattern = (sqlPattern.IsNull) ? string.Empty : sqlPattern.Value;
    string replacement = (sqlReplacement.IsNull) ? string.Empty : sqlReplacement.Value;
    return new SqlString(Regex.Replace(input, pattern, replacement));
}</code>
登录后复制
  • 构建项目并将程序集添加到 SQL Server 数据库
  • 创建 SQL CLR 函数:
<code class="language-sql">CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX),@pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX))
RETURNS NVARCHAR(4000)
AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace]
GO</code>
登录后复制
  • 使用示例:
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
登录后复制

以上是如何从 SQL Server VARCHAR 列中删除不寻常的字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板