如何在 CLR UDF 中返回 nvarchar(max)?

2024-01-07

假设以下定义:

/// <summary>
/// Replaces each occurrence of sPattern in sInput with sReplace. This is done 
/// with the CLR: 
/// new RegEx(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace). 
/// The result of the replacement is the return value.
/// </summary>
[SqlFunction(IsDeterministic = true)]
public static  SqlString FRegexReplace(string sInput, string sPattern, 
      string sReplace)
{
    return new Regex(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace);
}

传入一个nvarchar(max)价值sInput长度 > 4000 将导致值被截断(即调用此 UDF 的结果是nvarchar(4000)相对于nvarchar(max).


哦,无论如何,我自己找到了答案:

/// <summary>
/// Replaces each occurrence of sPattern in sInput with sReplace. This is done 
/// with the CLR: 
/// new RegEx(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace). 
/// The result of the replacement is the return value.
/// </summary>
[SqlFunction(IsDeterministic = true)]
[return: SqlFacet(MaxSize = -1)]
public static  SqlString FRegexReplace([SqlFacet(MaxSize = -1)]string sInput, 
       string sPattern, string sReplace)
{
    return new Regex(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace);
}

这个想法是暗示 SQL Server 输入和返回值不是默认值nvarchar(4000),但大小不同。

我学到了一个关于属性的新技巧:它们可以添加到参数以及方法本身(非常明显),但是also到返回值[return: AttributeName(Parameter=Value, ...)] Syntax.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CLR UDF 中返回 nvarchar(max)? 的相关文章

随机推荐

  • 错误:预期未定义为 GraphQL 模式

    我收到一条错误 内容为 错误 预期未定义为 GraphQL 架构 请检查一下这是什么问题 当我移动到 localhost 3000 graphiql 时 它显示上述错误 也许我犯了一些错误 请任何人检查并帮助我 如果可能的话 我的服务器 j
  • 人脸识别-Python

    我正在尝试通过以下方式进行人脸识别主成分分析 PCA 使用Python 现在我能够获得训练图像之间的最小欧几里德距离images和输入图像input image 这是我的代码 import os from PIL import Image
  • 获取正在激活的选项卡(div)的ID

    我正在使用 jquery 1 9 和 jquery UI 1 10 我希望能够在单击选项卡时获取选项卡 ID 例如 如果我单击名为 Second 的选项卡 我想获得 tabs 2 响应 到目前为止我已经完成了以下代码
  • 我是否应该同步监听器通知?

    我总是很犹豫是否要把我的锁公开 公开 我总是尝试将锁限制在我的实现范围内 我相信 不这样做就会导致僵局 我有以下课程 class SomeClass protected ArrayList
  • 用于相交列列表的一致 ColumnTransformer

    我想用sklearn compose ColumnTransformer对于相交的列列表 一致 不是并行的 因此 第二个变换器应该仅在第一个变换器之后执行 log transformer p FunctionTransformer lamb
  • Gitlab CI:仅在工件存在时运行作业

    我有 monorepo 我想根据已更改的目录内容运行子管道 在工作中prepare config我检查最新更改在哪里 我创建子配置 yml 并在下一阶段的工作中run child我从 运行子管道 问题是 如果model gitlab ci
  • 如何从 .net 中的 WSDL 文件生成客户端?

    我正在尝试从 WSDL 文件生成客户端 而不使用 Visual Studio 本身 并且不知道最好的起点是什么 客户需要使用相同的文件并为 PHP 应用程序生成客户端 我想通过自己创建客户端 在工作室之外 来证明 WSDL 是有效的 svc
  • 检测哪张SIM卡收到消息

    我正在尝试检测哪张 SIM 卡已在双 SIM 卡或三卡支持手机上的 BroadcastReceiver 中接收到传入消息 笔记 所有 SIM 卡都有相同的 SMSC 似乎信息可能位于带有密钥的 Intent extra 中 simSlot
  • 更改函数体内函数的属性?

    我正在尝试创建一个函数来记录它被调用的次数 并且我希望信息保留在函数本身内部 我尝试创建一个包装器 如下所示 def keep count f f count 0 functools wraps f def wrapped f args k
  • 将 SQL 查询读入 Dask DataFrame

    我正在尝试创建一个函数 该函数将 SQL SELECT 查询作为参数 并使用 dask 将其结果读入 dask DataFramedask read sql query功能 我是 dask 和 SQLAlchemy 的新手 我首先尝试了这个
  • Angular Elements - 外部库的 CSS

    我希望将 Angular Elements 与外部库 Kendo UI 一起使用 我设法创建一个组件并将其添加到我的应用程序中 问题是 Kendo 的 CSS 搞乱了我所有的应用程序样式 关于如何封装 CSS 以仅应用于组件而不是 泄漏 到
  • 尝试运行 OSGi 调试目标时支持“平台不受支持”

    我正在尝试运行 IntelliJ Idea 的一个小型 OSGi 项目 我已经在 Idea 的 OSGi 配置部分添加了 Equinox 容器 然后我将 OSGi 方面添加到项目中 到目前为止一切看起来都很好 然而 一旦我尝试运行该项目 我
  • 大型内部类和私有变量

    我多次遇到的一件事是服务类 如 JBoss 服务 由于助手内部类而变得过大 我还没有找到一个好的方法来打破课堂 这些助手通常是线程 这是一个例子 Asset service keeps track of the metadata about
  • 使用 NHibernate 映射字符串集合

    我有一个带有属性的域类IList
  • 如何使用 javascript/css 更改 href 属性的值?

    假设html包含以下结构 div a href http the link that needs to be changed text a div div div div div
  • LaTeX 中的词汇表包和脚注

    我目前陷入困境 有两个单独的术语表 main acronyms Acronyms词汇表在文本中首次使用时打印脚注 但是main词汇表没有 有没有办法制作除其他词汇表之外的其他词汇表acronyms在第一次使用该术语时打印脚注 我不明白该怎么
  • 在 .svg xml 中按 ID 选择元素

    我生成一个 svg使用 Inkscape 生成图像 这是一个 xml 文件 我将节点的 ID 设置为 mount arm r 我想从该元素读取属性 x y 我似乎无法选择rect元素 python 我尝试了 XPath 或者手动一次深度 我
  • Android进度条中的垂直线

    我需要一个水平进度条 在主进程的末尾有一条黑色垂直线 使用我的代码 进度条没问题 但该线始终位于进度条的中间 我尝试使用clip但随后它就消失了 而不是出现在片段的末尾 My code
  • 我应该将我的应用程序上下文与用于身份的 ApplicationDbContext 分开吗?

    在 Visual Studio 2013 中 创建 ASP NET 项目时 会生成一个文件IdentityModels cs包含一个类ApplicationDbContext 继承自IdentityDbContext
  • 如何在 CLR UDF 中返回 nvarchar(max)?

    假设以下定义