gpt4 book ai didi

sql-server - SQL Server 是否有删除括号及其内容的函数?

转载 作者:行者123 更新时间:2023-12-02 23:25:34 26 4
gpt4 key购买 nike

我需要从多个记录中删除所有括号及其内容,但我无法找出执行此操作的最佳方法。

我希望能够写出类似的东西

SELECT dbo.RemoveBracketedText(ColumnName) FROM TableName;

它会将“Hello (World)”等记录转换为“Hello”

感谢任何帮助。

谢谢!

最佳答案

我的第一个方法可能是编写一个快速的 C# 应用程序来执行此操作,或者使用 SSIS 并编写一个包来处理它,但如果您决定使用 tsql...它可能需要结合使用递归函数和一些字符串操作。

这经过了最低程度的测试,但应该很接近。 (即它适用于您在问题中提供的示例文本)。

CREATE FUNCTION RemoveBracketedText (@sourceString varchar(max))
RETURNS varchar(max)
AS
BEGIN

DECLARE @pStart Int
DECLARE @pEnd Int
DECLARE @pTarget varchar(max)
DECLARE @pResult varchar(max)

SET @pStart = CHARINDEX('(', @sourceString)
SET @pEnd = CHARINDEX(')', @sourceString, @pStart) /** start looking from pos of opening bracket */

IF @pEnd > @pStart AND @pEnd > 0 /** basic error avoidance */
BEGIN
SET @pTarget = SUBSTRING(@sourceString, @pStart, @pEnd - @pStart + 1)
SET @pResult = Replace(@sourceString, @pTarget, '')

/** recursion to get rid of more than one set of brackets per string */
IF CHARINDEX('(', @pResult) > 0 AND CHARINDEX(')', @pResult) > CHARINDEX('(', @pResult)
BEGIN
SET @pResult = dbo.RemoveBracketedText(@pResult)
END
END
ELSE
BEGIN
SET @pResult = @sourceString /** no matching set of brackets found */
END

RETURN @pResult
END

关于sql-server - SQL Server 是否有删除括号及其内容的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6834700/

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