AA-6ren">
gpt4 book ai didi

sql - 如何获取SQL子串?

转载 作者:行者123 更新时间:2023-12-05 08:21:07 24 4
gpt4 key购买 nike

我有一列包含如下值:

"AAAA\BBBBBBBB\CCC"(A、B、C部分长度不固定。)

如果\CCC 存在,我需要删掉它,如果不存在,就不要管它。

例如:

AAA\BBBBBB\CCC -> AAA\BBBBBB

AA\BBBB -> AA\BBBB

AA -> AA

抱歉我不够清楚,A、B、C部分不是字面上的ABC,它们可以是任何内容。

\DDD\EEEE(etc.) 也应该被删除

最佳答案

虽然在纯 T-SQL 中肯定有一种方法可以做到这一点,但它可能并不像它应该的那样清晰。

您可能需要考虑使用 SQLCLR -based 的用户定义函数 (UDF) 代替。有了它,您将能够受益于 的强大功能和清晰度(或 )在 SQL Server 中。

只是让你的函数将你的字符串作为参数接收并返回你想要的输出作为标量值。从那时起,您将能够像使用您可能已经拥有的任何其他 UDF 一样使用该函数。这样您的代码将更容易编写(以及之后的阅读/维护)。

你的 函数可以像这样容易写(伪代码):

public static string SpecialSubstring(string input)
{
if (input == null) return null;

var builder = new StringBuilder();
var occurences = 0;

for (i = 0; i < input.Length; i++;)
{
var current = input[i];

if (current == '\') occurences += 1;
if (occurences >= 2) break;

builder.Append(current)
}

return builder.ToString();
}

然后,从 T-SQL:

SELECT
[owningschema].SpecialSubstring('AAA\BBBBBB\CCC'), -- returns 'AAA\BBBBBB'
[owningschema].SpecialSubstring('AA\BBBB'),, -- returns 'AA\BBBB'
[owningschema].SpecialSubstring('AA') -- returns 'AA'

此页面将为您提供入门所需的几乎所有内容:

SQL Server Common Language Runtime Integration

关于sql - 如何获取SQL子串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com