Si los últimos cuatro dígitos de la tarjeta de identificación son únicos

Como todos sabemos, la tarjeta de identificación es única.

Pero alguien preguntó de repente, ¿los últimos cuatro dígitos de la tarjeta de identificación en nuestra base de datos son únicos? ¿Puedes consultar la base de datos?

Mi primera reacción a esta pregunta es, por supuesto, que no es la única.

interpretación no rigurosa

Partiendo de la premisa de no realizar la verificación de la base de datos, solo lo pensamos lógicamente. La tarjeta de identificación tiene un total de 18 dígitos, y los últimos cuatro dígitos son los cuatro dígitos después del cumpleaños. Así que no importa cómo lo organice, es en la mayoría de las combinaciones 10 10 10 * 11 seguramente se repetirán.

Explicación rigurosa

Entendámoslo lógicamente.

Normas de tramitación del DNI:
El número del DNI está compuesto por 18 dígitos
El primer y segundo dígito indican: el código de la provincia donde se encuentra
El tercer y cuarto dígito indica: el código de la ciudad donde se encuentra
El los dígitos quinto y sexto indican: el distrito y condado donde se encuentra
Los dígitos 7 al 14 del indican: año, mes y día de nacimiento (los dígitos 7, 8, 9 y 10 son el año, el 11 y los dígitos 12 son el mes, y
los dígitos 13 y 14 son el día). El dígito también tiene la función de identificación de género. El dígito 18 de los singles masculinos y los dobles femeninos es un
código de verificación: puede ser un número del 0 al 9, y a veces también se usa X significa

Por lo tanto, en diferentes provincias y municipios se pueden repetir los últimos cuatro dígitos del DNI.

validación de base de datos

Sí, somos programadores y podemos usar datos para convencer a otros cuando la teoría falla.
Aquí mi base de datos es una base de datos mongo, por lo que mi declaración de consulta es la siguiente

db.user.aggregate([
    {
        $match: {
            //请原谅数据库中那些不规范的身份证号
            card_id: {
                $exists: true,
                $nin: ["", null]
            }
        }
    },
    {
        $project: {
            "_id": 1,
            "name": 1,
            "card_id": 1,
            "card_id_info": {
                $substr: ["$card_id", 14, 4]
            }
        }
    },
    //请原谅数据库中那些不规范的身份证号
    {
        $match: {
            card_id_info: {
                $nin: ["", null]
            }
        }
    },
    {
        $group: {
            _id: "$card_id_info",
            count: {
                $sum: 1
            },
						//增加输出
            uniqueIds: {
                "$addToSet": {
                    _id: "$_id",
                    name: "$name",
                    card_id: "$card_id",
                    card_id_info: "$card_id_info"
                }
            }
        }
    },
    {
		//让我们看看重复的多的是哪些
        $sort: {
            count:  - 1
        }
    }
])

mensaje

Los datos son despiadados pero reales

Supongo que te gusta

Origin blog.csdn.net/Long861774/article/details/127475038
Recomendado
Clasificación