提取括号中的内容

stevenjin 2018-12-06 10:31:57
提取括号中的内容:
采购(华中区)->华中区
...全文
439 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-12-06
  • 打赏
  • 举报
回复
上面的有点问题, 稍改下:
USE tempdb
GO
IF OBJECT_ID('dbo.Fun_GetStrInBracket') IS NOT NULL 
	DROP FUNCTION dbo.Fun_GetStrInBracket
GO
-- =============================================
-- Author:		yenange
-- Create date: 2018-12-16
-- Description:	获取括号中的内容
-- =============================================
CREATE FUNCTION  dbo.Fun_GetStrInBracket
(
	@str NVARCHAR(MAX),
	@left NVARCHAR(50),
	@right NVARCHAR(50)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
	DECLARE @r NVARCHAR(MAX),@leftIdx INT,@rightIdx INT
	SET @leftIdx = CHARINDEX(@left,@str);
	SET @rightIdx = CHARINDEX(@right,@str);
	IF ISNULL(@str,'')='' OR ISNULL(CHARINDEX(@left,@str),0)=0
		RETURN '';
		
	SET @r = SUBSTRING(@str,@leftIdx+LEN(@left),LEN(@str))
	SET @rightIdx = CHARINDEX(@right,@r);
	IF ISNULL(@rightIdx,0)=0
		RETURN '';
		
	RETURN SUBSTRING(@r,0,@rightIdx);
END
GO

SELECT dbo.Fun_GetStrInBracket('采购(华中区)','(',')')
SELECT dbo.Fun_GetStrInBracket('采购《《华中区》》','《《','》》')
SELECT dbo.Fun_GetStrInBracket('采购【华中区】','【','】')
SELECT dbo.Fun_GetStrInBracket('采购{华中区}','{','}')
SELECT dbo.Fun_GetStrInBracket('采购[华中区]','[',']')
/*
华中区
 */



吉普赛的歌 2018-12-06
  • 打赏
  • 举报
回复
经常用的话, 建议写成函数: 下面的函数, 还能提供其它括号中的内容
USE tempdb
GO
IF OBJECT_ID('dbo.Fun_GetStrInBracket') IS NOT NULL 
	DROP FUNCTION dbo.Fun_GetStrInBracket
GO
-- =============================================
-- Author:		yenange
-- Create date: 2018-12-16
-- Description:	获取括号中的内容
-- =============================================
CREATE FUNCTION  dbo.Fun_GetStrInBracket
(
	@str NVARCHAR(MAX),
	@left NVARCHAR(50),
	@right NVARCHAR(50)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
	DECLARE @r NVARCHAR(MAX),@leftIdx INT,@rightIdx INT
	SET @leftIdx = CHARINDEX(@left,@str);
	SET @rightIdx = CHARINDEX(@right,@str);
	IF ISNULL(@str,'')='' OR ISNULL(CHARINDEX(@left,@str),0)=0
		RETURN '';
		
	SET @r = SUBSTRING(@str,@leftIdx+LEN(@leftIdx),LEN(@str))
	SET @rightIdx = CHARINDEX(@right,@r);
	IF ISNULL(@rightIdx,0)=0
		RETURN '';
		
	RETURN SUBSTRING(@r,0,@rightIdx);
END
GO


SELECT dbo.Fun_GetStrInBracket('采购(华中区)','(',')')
/*
华中区
 */
二月十六 2018-12-06
  • 打赏
  • 举报
回复
或者“)”后边还有其他值得话,用这个
DECLARE @str NVARCHAR(200)='采购(华中区)'
SELECT SUBSTRING(@str,CHARINDEX('(',@str)+1,CHARINDEX(')',@str)-CHARINDEX('(',@str)-1)


二月十六 2018-12-06
  • 打赏
  • 举报
回复
DECLARE @str NVARCHAR(200)='采购(华中区)'
SELECT SUBSTRING(@str,CHARINDEX('(',@str)+1,LEN(@str)-CHARINDEX('(',@str)-1)


stevenjin 2018-12-06
  • 打赏
  • 举报
回复
谢谢2位大佬

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧