單雙號限行,今天是否綠色出行

要判斷車牌是否符合單雙號出行。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
Source Code

 

再寫另一個函數,判斷數字是否爲偶數:函數

判斷數字是否爲奇數或偶數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
Source Code

 

準備好函數與數據,那咱們開始進行查詢: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
Source Code

 

運行獲得的結果,測試的日期爲2019-06-02:spa

相關文章
相關標籤/搜索