SQL_MID関数

説明:項目が数珠つなぎに列挙されたテキストから、項目を抽出する スカラー値関数

説明:項目が数珠つなぎに列挙されたテキストから、項目を抽出する
 
スカラー値関数
CREATE FUNCTION [dbo].[GetMidText]
(
@strTGT nvarchar(max)  --= 'ID=123 氏名=山田太郎 性別=男 年齢=36'
,@strFROM nvarchar(100)  --= '氏名='
,@strTO nvarchar(100)  --= ' '
)
RETURNS nvarchar(2000)
AS
BEGIN
DECLARE @sRes nvarchar(2000)
DECLARE @iTEST int
DECLARE @iFROM int
DECLARE @iTO int
SET @iTEST = (SELECT CHARINDEX(@strFROM,@strTGT))
if @iTEST > 0
BEGIN
SET @iFROM = (SELECT CHARINDEX(@strFROM,@strTGT) + LEN(@strFROM))
SET @iTO = (SELECT CHARINDEX(@strTO,@strTGT,@iFROM))
SET @sRes = (SELECT substring(@strTGT,@iFROM,@iTO - @iFROM))
END
if @iTEST = 0
BEGIN
SET @sRes = ''
END
RETURN @sRes
END
 
GO
CREATE FUNCTION [dbo].[GetMidText]
(
@strTGT nvarchar(max) --= 'ID=123 氏名=山田太郎 性別=男 年齢=36'
,@strFROM nvarchar(100) --= '氏名='
,@strTO nvarchar(100) --= ' '
)
RETURNS nvarchar(2000)
AS
BEGIN
DECLARE @sRes nvarchar(2000)
DECLARE @iTEST int
DECLARE @iFROM int
DECLARE @iTO int
SET @iTEST = (SELECT CHARINDEX(@strFROM,@strTGT))
if @iTEST > 0
BEGIN
SET @iFROM = (SELECT CHARINDEX(@strFROM,@strTGT) + LEN(@strFROM))
SET @iTO = (SELECT CHARINDEX(@strTO,@strTGT,@iFROM))
SET @sRes = (SELECT substring(@strTGT,@iFROM,@iTO - @iFROM))
END
if @iTEST = 0
BEGIN
SET @sRes = ''
END
RETURN @sRes
END
GO
SELECT dbo.GetMidText('ID=123 氏名=山田太郎 性別=男 年齢=36','氏名=',' ') as 氏名