SqlServer截字符串

删库到跑路 2018-10-29 06:33:17
如图,只要黑框之内的两个int类型,分成两列
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
删库到跑路 2018-10-30
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
不过, 需要你的格式非常固定才行
根据你写的,改了一下,很稳
吉普赛的歌 版主 2018-10-29
  • 打赏
  • 举报
回复
不过, 需要你的格式非常固定才行
吉普赛的歌 版主 2018-10-29
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
	descript NVARCHAR(MAX)	
)
GO
SET NOCOUNT ON
INSERT INTO t VALUES (N'修改stuffgodown_id列,原始值为:36,修改后为:37,')
INSERT INTO t VALUES (N'修改stuffgodown_id列,原始值为:16,修改后为:31,修改userinfo_id列,原始值为:591,修改后为52,')
GO
IF OBJECT_ID('Fun_GetValues') IS NOT NULL DROP FUNCTION Fun_GetValues
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE FUNCTION dbo.Fun_GetValues
(
	@str NVARCHAR(MAX)
)
RETURNS 
@t TABLE 
(
	v1 INT,
	v2 INT
)
AS
BEGIN
	DECLARE @idx1 INT,@idx2 INT,@tmp1 NVARCHAR(MAX),@tmp2 NVARCHAR(MAX)
	SET @idx1=CHARINDEX(N'原始值为:',@str)
	SET @idx2=CHARINDEX(N'修改后为:',@str)
	IF @idx1>1
	BEGIN
		SET @tmp1=SUBSTRING(@str,@idx1+5,LEN(@str))
		SET @tmp1=SUBSTRING(@tmp1,1,CHARINDEX(N',',@tmp1)-1)
	END
	IF @idx2>1
	BEGIN
		SET @tmp2=SUBSTRING(@str,@idx2+5,LEN(@str))
		SET @tmp2=SUBSTRING(@tmp2,1,CHARINDEX(N',',@tmp2)-1)
	END
	INSERT INTO @t VALUES (@tmp1,@tmp2);
	
	RETURN 
END
GO

--query
SELECT * FROM t CROSS APPLY  dbo.Fun_GetValues(t.descript) AS f

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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