色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql怎么判斷身份證真假

錢艷冰2年前8瀏覽0評論

MySQL是一種關系型數據庫,提供了許多用于數據存儲和查詢的函數和操作。在某些情況下,我們需要判斷一個身份證號碼的真假。以下是一種解決辦法:

CREATE FUNCTION id_card_is_valid(id_card VARCHAR(18))
RETURNS BOOLEAN
BEGIN
DECLARE i INT;
DECLARE j INT;
DECLARE y SMALLINT;
DECLARE m SMALLINT;
DECLARE d SMALLINT;
DECLARE lastIndex INT;
DECLARE sum INT DEFAULT 0;
DECLARE remainder INT DEFAULT 0;
DECLARE weight VARCHAR(17) DEFAULT '7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2';
DECLARE codes VARCHAR(11) DEFAULT '1 0 X 9 8 7 6 5 4 3 2';
IF LENGTH(id_card) != 18 THEN
RETURN FALSE;
END IF;
FOR i IN 1..17 DO
IF SUBSTR(id_card, i, 1) REGEXP '[0-9]' THEN
sum := sum + CAST(SUBSTR(id_card, i, 1) AS SIGNED) * CAST(SUBSTR(weight, i, 1) AS SIGNED);
ELSE
RETURN FALSE;
END IF;
END FOR;
lastIndex := LENGTH(id_card);
remainder := SUM % 11;
IF SUBSTR(codes, remainder * 2 + 1, 1) = SUBSTR(id_card, lastIndex, 1) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;

以上代碼實現了一個名為id_card_is_valid的MySQL函數,它接受一個18位的字符串作為參數,返回一個布爾值,表示這個身份證號碼是否為有效的。在函數內部,我們首先檢查字符串是否為18位,如果不是,就直接返回false。然后我們計算身份證號碼的前17位數字的加權和,再通過加權和對11取模,得到最后一位校驗碼的下標。最后我們判斷身份證號碼的最后一位字符是否和校驗碼相等。如果相等,函數返回true,否則返回false。