الحد الأدنى والحد الأقصى لقيمة الأعمدة
إنشاء دالة لإرجاع الحد الأدنى والحد الأقصى لقيمة الأعمدة عن طريق ربط السلاسل وتقسيمها إلى صفوف ثم إرجاع القيمة الصحيحة
معلومات
ستعيد هذه الدالات القيم الدنيا والقصوى ضمن سلسلة نصية متسلسلة.
لاستخدام هذا ، ستحتاج إلى إنشاء القيم التي تحتاج إلى تحليلها ، وكذلك لديك وظيفة TextToRows حيث سنحول السلسلة إلى صفوف ونحلل القيمة ذات الصلة مرة أخرى.
في الأصل فقط للأعداد الصحيحة ، أضفنا حدًا أدنى وحدًا أقصى للسلاسل أيضًا.
باستخدام وظائف السلسلة ، قد تحتاج إلى تغيير الترتيب وتغييره إلى أعلى بأمر من خلال إذا كنت تبحث عن حالة حساسة لحالة الأحرف.
SQL Code - MAX
CREATE FUNCTION [dbo].[GetStrMAX_INT](@Delim NVARCHAR(1),@Str NVARCHAR(200)) RETURNS INT AS BEGINDECLARE @RS INTSET @RS=(SELECT MAX(CONVERT(INT,REPLACE(WordStr,@Delim,'')))FROM Utilities.dbo.TextToRows(@Delim,@Str)WHERE ISNUMERIC(WordStr)=1)RETURN @RSENDGOSELECT dbo.GetStrMAX_INT(',','1,2,3,4,5,a')
SQL Code - MIN
CREATE FUNCTION [dbo].[GetStrMIN_INT](@Delim NVARCHAR(1),@Str NVARCHAR(200)) RETURNS INT AS BEGINDECLARE @RS INTSET @RS=(SELECT MIN(CONVERT(INT,REPLACE(WordStr,@Delim,'')))FROM Utilities.dbo.TextToRows(@Delim,@Str)WHERE ISNUMERIC(WordStr)=1)RETURN @RSENDGOSELECT dbo.GetStrMIN_INT(',','1,2,3,4,5,a')
We've got strings covered too...
ALTER FUNCTION [dbo].[GetStrMAX](@Delim NVARCHAR(1),@Str NVARCHAR(200)) RETURNS NVARCHAR(100) AS BEGINDECLARE @RS NVARCHAR(100)SET @RS=(SELECT MAX(CONVERT(NVARCHAR(100),REPLACE(WordStr,@Delim,'')))FROM Utilities.dbo.TextToRows(@Delim,@Str))RETURN @RSENDGOALTER FUNCTION [dbo].[GetStrMIN](@Delim NVARCHAR(1),@Str NVARCHAR(200)) RETURNS NVARCHAR(100) AS BEGINDECLARE @RS NVARCHAR(100)SET @RS=(SELECT MIN(CONVERT(NVARCHAR(100),REPLACE(WordStr,@Delim,'')))FROM Utilities.dbo.TextToRows(@Delim,@Str))RETURN @RSENDGO
Testing
SELECT dbo.GetStrMAX_INT(',','1,2,3,x,5,a') --5SELECT dbo.GetStrMIN_INT(',','1,2,3,x,5,a') --1SELECT dbo.GetStrMAX(',','1,2,3,x,5,a') --xSELECT dbo.GetStrMIN(',','1,2,3,x,5,a') --1