SQL Server
SQL Server
StringBuilder GetBefore
Demonstrates the StringBuilder.GetBefore method.The GetBefore method was added in Chilkat v9.5.0.77
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
DECLARE @sb int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OAMethod @sb, 'Append', @success OUT, 'www.chilkatsoft.com'
-- The GetBefore method returns the contents of the string up to but not including
-- the marker string. If the remove flag is 1, then both the returned string AND
-- the marker are removed.
DECLARE @removeFlag int
SELECT @removeFlag = 0
DECLARE @marker nvarchar(4000)
SELECT @marker = '.'
DECLARE @substr nvarchar(4000)
EXEC sp_OAMethod @sb, 'GetBefore', @substr OUT, @marker, @removeFlag
PRINT 'substr = ' + @substr
EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
PRINT 'sb contains: ' + @sTmp0
-- Output:
-- substr = www
-- sb contains: www.chilkatsoft.com
SELECT @removeFlag = 1
EXEC sp_OAMethod @sb, 'GetBefore', @substr OUT, @marker, @removeFlag
PRINT 'substr = ' + @substr
EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
PRINT 'sb contains: ' + @sTmp0
-- Output:
-- substr = www
-- sb contains: chilkatsoft.com
-- If the marker is not found, and the removeFlag is 1,
-- then the entire string is returned and the sb is cleared.
-- For example:
EXEC sp_OAMethod @sb, 'Clear', NULL
EXEC sp_OAMethod @sb, 'Append', @success OUT, '111--222--333--444'
SELECT @marker = '--'
SELECT @removeFlag = 1
EXEC sp_OAGetProperty @sb, 'Length', @iTmp0 OUT
WHILE (@iTmp0 > 0)
BEGIN
EXEC sp_OAMethod @sb, 'GetBefore', @substr OUT, @marker, @removeFlag
EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
PRINT 'substr = ' + @substr + ', sb contains: ' + @sTmp0
END
-- Output is:
-- substr = 111, sb contains: 222--333--444
-- substr = 222, sb contains: 333--444
-- substr = 333, sb contains: 444
-- substr = 444, sb contains:
EXEC @hr = sp_OADestroy @sb
END
GO