SQL CLR 拆分 UDF 中的标识列

2023-12-13

如何使用标准 SQL CLR Split UDF 返回标识列,例如下面的代码将返回一个表,其中字符串值按分隔符分隔,我还需要以某种方式返回标识列。

<SqlFunction(FillRowMethodName:="FillRow", TableDefinition:="value nvarchar(4000)")> _
Public Shared Function GetStrings(ByVal str As SqlString, ByVal delimiter As SqlString) As IEnumerable
    If (str.IsNull OrElse delimiter.IsNull) Then
        Return Nothing
    Else
        Return str.Value.Split(CChar(delimiter))
    End If
End Function
Public Shared Sub FillRow(ByVal row As Object, ByRef str As String)
    str = CType(row, String).Trim()
End Sub

就 CLR UDF 而言,“身份”没有任何特殊含义,因为您自己生成所有行。你想要的只是一个计数器。

简单的答案是当场生成索引,然后发送IEnumerable的复合值。所以像这样:

[SqlFunction(FillRowMethodName = "FillMyRow",
    TableDefinition = "ID int, Value nvarchar(4000)")]
public static IEnumerable GetStrings(SqlString str, SqlString delimiter)
{
    if (str.IsNull || delimiter.IsNull)
    {
        return null;
    }

    string[] values = str.Value.Split(delimiter.Value.ToCharArray());
    StringPair[] results = new StringPair[values.Length];
    for (int i = 0; i < values.Length; i++)
    {
        results[i] = new StringPair(i + 1, values[i]);
    }
    return results;
}

public static void FillMyRow(object row, ref int id, ref string value)
{
    StringPair pair = (StringPair)row;
    id = pair.ID;
    value = pair.Value;
}

public class StringPair
{
    public StringPair(int id, string value)
    {
        this.id = id;
        this.value = value;
    }

    public int ID { get; private set; }
    public string Value { get; private set; }
}

它与身份列完全相同;您只需从数字 1 开始递增 ID 的计数器。

您可能还需要考虑可以在 SQL 本身中生成代理 IDROW_NUMBER,因此可能根本没有必要这样做。这是我个人的选择,但如果您需要在 CLR 输出中执行此操作,上面的代码应该可以解决问题。

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

SQL CLR 拆分 UDF 中的标识列 的相关文章

  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • Perl 拆分和正则表达式

    我有以下字符串 100 California Grown Olives Water Salt And Ferrous Gluconate An Iron Derivative asasd sadasda 我想把它分开 but only if
  • 如何更新 SQL Server 2000 中的 text 或 ntext 字段

    所以我需要更新一个文本字段 在下面使用时 UPDATE 语句或 WRITETEXT 语句都不起作用 CREATE TABLE MyTable IDField int MyField text INSERT INTO MyTable IDFi
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • 打开脚本任务时 SSIS 丢失文件引用

    我们使用自定义审核程序集 C 在脚本任务中记录 SSIS 中的多种操作 我们将在 GAC 中构建自定义程序集 用于运行时 并发布到 IDE VS2008 的公共程序集区域以供设计时文件引用 后构建完成后 自定义程序集可在运行时使用 并可在文
  • 指数数组的边界之外。 (微软.SqlServer.smo)

    我在用SQL Server 2008 R2 它运行良好 但最近 我改变了我的托管服务器 我发现他们已经安装了SQL Server 2012在服务器上 现在 问题是通过连接服务器数据库后SQL Server 2008 R2 当我单击任何表名称
  • R正则表达式获取第二个下划线之前的所有文本

    s lt 1 343 43Hello 2 323 14 fdh 99H 在 R 中 我想使用正则表达式来获取第二个下划线之前的子字符串 如何使用一个正则表达式来完成此操作 另一种方法是用 分割 然后粘贴前两个 一些东西 paste sapp
  • “as”关键字在内部如何工作?

    我知道这个关键字的功能 但我想知道它在较低级别上是如何工作的 哪一个更快 它们总是产生相同的结果吗 如果是的话 为什么有两种不同的方式 Is there an overhead An internal try catch Class123
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • SQL Server 差异工具

    在一个团队中工作时 人们很容易修改开发 SQL Server 表并忘记它 或者准备部署更改但必须等待部署 这使得我们的开发表和活动表不一致 从而在推送存储过程时导致问题 是否有一个工具可以让我输入 SPROC 名称并让它检查开发数据库和实时
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • PHP DBlib PDO 问题

    我正在尝试通过 php 连接到 MSSQL 服务器 但我的 pdo 连接给我带来了困难和我不太理解的错误 我在下面粘贴的代码一周前运行得很好 突然间它就停止了 没有任何人进行任何更改 我仍然可以连接到服务器并直接从命令行运行查询 但我在 p
  • 为什么查询优化器完全忽略索引视图索引?

    SQL 小提琴 http sqlfiddle com 6 d4496 1 http sqlfiddle com 6 d4496 1 数据是为您的实验预先生成的 有一个明显的表格 CREATE TABLE Entity ID int Clas
  • 与 FOREIGN KEY 约束冲突

    我有两张桌子 学术界 CREATE TABLE dbo R ACADEMIE ID ACADEMIE dbo IDENTIFIANT NOT NULL LC ACADEMIE CODE dbo LIBELLE COURT NOT NULL
  • 使用 Powershell SQL 将数据提取到 Excel

    我想使用 powershell 将数据从 SQL Server 提取到新的 excel 文件 对于小型数据集 我的代码可以工作 但某些表的行数超过 100 000 行 这将需要很长时间 我不在 SQl 服务器中使用该实用程序的原因是因为我想
  • SQL 插入失败 - 违反主键约束

    我在 SQL Insert 语句中看到一个非常奇怪的问题 我有一个简单的表 带有一个 ID 和 2 个日期时间 请参阅下面的创建脚本 CREATE TABLE dbo DATA POPULATION LOGS ID int IDENTITY
  • 在sql server 2008中插入新记录时如何检查数据库中的值是否已存在

    我创建了一个存储过程 用于从表中选择值 如果该值已经存在 那么它将更新该值 但如果不存在 那么它将插入新值 我为此使用了存储过程 如下所示 Create PROCEDURE dbo sp Insert Tid int NULL Quid i
  • 自动创建n列表

    我想在一行中将 236 个 int 值存储到 sql 中 现在我必须声明该表 但我不想输入 236 倍的列名 列名应该是 BYTE001 BYTE002 或其他前缀 如 BYTE B INT 可以自动生成ColumnNames吗 我尝试以下
  • PHP、PDO 和 SQLSRV 对一个 INSERT 语句执行多次

    我已经在 MySQL 和 Apache 服务器上使用 PDO 和 PHP 一段时间了 我最近的任务是将企业的旧 Web 应用程序转换为新设置 旧设置是标准 Linux Web 堆栈 Apache PHP MySQL Filezilla 新设
  • 在 Navicat Premium 中连接到 LocalDB 服务器

    Recently I installed LocalDb Serer on my laptop I am trying to establish a connection between Navicat and LocalDB server

随机推荐

  • “失败:无法读取未定义的属性‘isPresent’”

    it should be able to create a task for a product as a CTA function browser sleep 6222 browser sleep 6222 console log ss
  • 在 KineticJS 中使用 mousedown 事件创建一个矩形

    我正在尝试使用 KineticJS 与 mousedown 和拖动事件创建一个矩形形状 但运气不佳 有人做过类似的事情吗 http jsfiddle net AYHSM 6 var stage new Kinetic Stage conta
  • 如何在 Highcharts 中使用自定义样式更改标记符号和数据标签

    我们如何在悬停时自定义数据标签和标记符号 请参考下图 将标记内的符号作为图像 url 链接 添加到系列中的最后一个数据 叉小提琴探索它 series data 29 9 71 5 106 4 129 2 144 0 176 0 135 6
  • 如何在 Symfony2 中正确启用 twig 的沙箱扩展?

    在 Symfony2 中 默认禁用一些 Twig 模块 其中之一是调试扩展 它添加了 debug 标签 在开发环境中有用 要启用它 没有什么难的 您可以将此服务添加到您的配置中 debug twig extension class Twig
  • 将 .sh 命令转换为 .bat 等效命令

    我正在按照本教程运行 jmx exporterwith卡桑德拉 https www robustperception io monitoring cassandra with prometheus 我发现而不是改变JVM OPTS in c
  • 如何通过 jquery POST 单选按钮值

    我有这个示例代码 while row mysql fetch object result1 echo
  • SQL SERVER 2008 在创建表时触发

    在 SQL SERVER 2008 的数据库中创建表时 有没有办法运行一些函数 例如触发器 是的 这就是所谓的 DDL 触发器 的文档CREATE TRIGGER有一个样本DROP SYNONYM 对于一个例子来说 这是一个非常值得怀疑的选
  • 客户端未经授权使用此方法检索访问令牌 Gmail API C#

    当我尝试使用服务帐户授权 gmail api 时 出现以下错误 客户端无权使用此方法检索访问令牌 static async Task MainAsync sstageEntities db new sstageEntities UserCr
  • 使用 PyE 的 Elasticsearch 批量索引

    我有一个简单的 python 脚本 用于索引包含 100 万行的 CSV 文件 import csv from pyes import reader csv reader open data csv rb conn ES 127 0 0 1
  • 经典 ASP - 从本地主机上的网页运行 .exe

    我正在尝试执行 bat 以使用以下代码在我的本地主机 服务器端 上启动 notepad exe 索引 asp file bat notepad exe 当我打开 ASP 页面时 没有任何反应 由于变量 return 返回值 0 所以我尝试设
  • 为什么React在将state设置为相同值后会第二次渲染组件?

    我有一个简单的 React 组件 每次单击按钮时我都会设置相同的值 import React useState from react import style css let data title ABC export default fu
  • 这些角色有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 r 和 n 有什么区别 我真的很想知道两者之间有什么区别 n r t chr 13 它们如何在 Web 应用程序中使用 在哪个操作系统中使用 等等 例如 您能否确认Windows使用 n r对于换行符
  • 您无权调用 openById

    问题 当我运行脚本时 Google 告诉我 您无权调用 openById 我从我的另一个 Google 电子表格中复制了一个脚本 并更改 了目标密钥变量的单元格引用并在源电子表格和目标电子表格中创建适当大小的命名范围 Google Apps
  • 同一 Android 项目中的多个 API 密钥

    是否可以在同一代码库中为 Google Maps Android API 指定多个键 看来每次更改密钥库时我都必须更改清单文件中的密钥 恕我直言 如果您需要测试使用调试和发布密钥库中的密钥签名的应用程序 这不是很方便 I added bot
  • R:具有子集的 T 统计量

    我想要一个表作为输出 其中包含某些变量均值差异之间的 t 统计量并基于数据的两个特定子集 我有以下数据 structure list Name c A A A A B B B B C C C C D D D D Date c 20 10 2
  • 如何在Opencv中访问单通道IplImage的元素

    我怎样才能访问Elements of an IplImage 单通道和 IPL DEPTH 8U 深度 我想更改图像特定 x y 位置的像素值 opencv提供CV IMAGE ELEM方法来访问IplImage的元素 它是一个宏 defi
  • DialogFragment 不关闭

    我已经四处寻找解决方案 但似乎这不是一个常见问题 我希望在我的应用程序连接到服务器时有一个不确定的对话框微调器 然后清除该对话框并在请求完成时显示不同的对话框 我正在使用Fragment兼容包 问题是在显示第二个对话框之前没有删除微调器 这
  • C# RSA 加密 -> PHP RSA 解密

    我正在尝试在 C 中使用 RSA 加密 AES 密钥和 IV 并使用 phpseclib 使用 PHP 解密它们 我花了大约 4 个小时尝试解决这个问题 但总是收到 第 2495 行解密错误 PKCS 似乎有问题 临时私钥
  • Hibernate 映射包

    我正在使用 Hibernate 注释 在我的所有模型类中 我都这样注释 Entity Table public class SomeModelClass 我的 hibernate cfg xml 是
  • SQL CLR 拆分 UDF 中的标识列

    如何使用标准 SQL CLR Split UDF 返回标识列 例如下面的代码将返回一个表 其中字符串值按分隔符分隔 我还需要以某种方式返回标识列