মাইক্রোসফ্ট এসকিউএল সার্ভার ২০০৮ সালে প্রতিটি মানের জন্য পৃথক সারি ছড়িয়ে দিতে একটি ডাটাবেজে কমা বিস্মৃত কলাম নিতে একটি টেবিলের মূল্যবান ফাংশন লিখেছিলাম।
উদাহরণস্বরূপ: "এক, দুই, তিন, চার" নিম্নলিখিত মানগুলি সহ কেবল একটি কলাম সহ একটি নতুন টেবিল ফেরত আসবে:
one
two
three
four
এই কোডটি কি আপনাকে ত্রুটিযুক্ত বলে মনে হচ্ছে? আমি এটি দিয়ে পরীক্ষা যখন
SELECT * FROM utvf_Split('one,two,three,four',',')
এটি কেবল চিরকাল চলে এবং কখনই কোনও কিছুই ফেরায় না। এটি সত্যিই হতাশাব্যঞ্জক হয়ে উঠছে বিশেষত যেহেতু এমএসএসকিউএল সার্ভারে বিভক্ত ফাংশনগুলিতে কোনও বিল্ড নেই (কেন কেন ?!) এবং ওয়েবে আমি যে সমস্ত অনুরূপ ফাংশন পেয়েছি সেগুলি হ'ল পরম ট্র্যাশ বা কেবল যা করার চেষ্টা করছি তার থেকে অপ্রাসঙ্গিক are ।
ফাংশনটি এখানে:
USE *myDBname*
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[utvf_SPlit] (@String VARCHAR(MAX), @delimiter CHAR)
RETURNS @SplitValues TABLE
(
Asset_ID VARCHAR(MAX) NOT NULL
)
AS
BEGIN
DECLARE @FoundIndex INT
DECLARE @ReturnValue VARCHAR(MAX)
SET @FoundIndex = CHARINDEX(@delimiter, @String)
WHILE (@FoundIndex <> 0)
BEGIN
DECLARE @NextFoundIndex INT
SET @NextFoundIndex = CHARINDEX(@delimiter, @String, @FoundIndex+1)
SET @ReturnValue = SUBSTRING(@String, @FoundIndex,@NextFoundIndex-@FoundIndex)
SET @FoundIndex = CHARINDEX(@delimiter, @String)
INSERT @SplitValues (Asset_ID) VALUES (@ReturnValue)
END
RETURN
END