要判斷車牌是否符合單雙號出行。html
這樣得獲取車牌最後一位數字是什麼?ide
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Insus.NET -- Blog: https://insus.cnblogs.com -- Create date: 2019-06-02 -- Update date: 2019-06-02 -- Description: 返回字符中最後一位數字 -- ============================================= CREATE FUNCTION [dbo].[svf_LicensePlateTailNumber] ( @number VARCHAR(8) ) RETURNS INT AS BEGIN DECLARE @rtn_num INT IF LEN(ISNULL(@number,'')) > 0 BEGIN DECLARE @l INT = LEN(TRIM(LTRIM(@number))) WHILE @l >= 0 BEGIN DECLARE @char CHAR(1) = SUBSTRING(@number,@L,1) IF @char LIKE '%[0-9]%' BEGIN SET @rtn_num = CAST(@char AS INT) BREAK; END SET @l = @l - 1 END END RETURN @rtn_num END GO
再寫另一個函數,判斷數字是否爲偶數:函數
《判斷數字是否爲奇數或偶數》http://www.javashuo.com/article/p-prxxsdin-bd.htmlpost
如今,咱們準備一些車牌,省略了前綴:測試
CREATE TABLE [dbo].[plate_number] ( [Number] VARCHAR(8) ) GO INSERT INTO [dbo].[plate_number] ([Number]) VALUES ('E124J'), ('S19J3'), ('88888'), ('55555'), ('2312H'), ('WE1AB') GO
準備好函數與數據,那咱們開始進行查詢:url
;WITH cte_a AS ( SELECT [Number],[dbo].[svf_LicensePlateTailNumber]([Number]) AS [尾號] FROM [dbo].[plate_number] ) , cte_b AS ( SELECT [Number], [尾號],CASE WHEN [dbo].[svf_IsEven]([尾號]) = 1 THEN N'雙號' ELSE N'單號' END AS [單雙號] , CASE WHEN [dbo].[svf_IsEven]([尾號]) = [dbo].[svf_IsEven](DAY(CURRENT_TIMESTAMP)) THEN '通行' ELSE N'限行' END AS [是否可通行] FROM cte_a ) SELECT [Number],[尾號],[單雙號],[是否可通行] FROM cte_b
運行獲得的結果,測試的日期爲2019-06-02:spa