Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/
GaussDB(DWS)/
Preguntas frecuentes/
Uso de la base de datos/
¿Cómo uso una función definida por el usuario para reescribir la función CRC32()?
Actualización más reciente 2023-10-12 GMT+08:00
¿Cómo uso una función definida por el usuario para reescribir la función CRC32()?
Actualmente, GaussDB(DWS) no tiene una función integrada de CRC32(). En su lugar, puede usar la función definida por el usuario de GaussDB(DWS) para reescribir la función CRC32().
- CRC32(expr)
- Descripción: Calcula la redundancia cíclica. El parámetro de entrada expr es una cadena. Si el parámetro es NULL, se devuelve NULL. De lo contrario, se devuelve un valor sin signo de 32 bits después del cálculo de redundancia.
Ejemplo de reescritura de la función CRC32() usando la sentencia de función definida por el usuario de GaussDB(DWS):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
CREATE OR REPLACE FUNCTION crc32(text_string text) RETURNS bigint AS $$ DECLARE val bigint; i int; j int; byte_length int; binary_string bytea; BEGIN IF text_string is null THEN RETURN null; ELSIF text_string = '' THEN RETURN 0; END IF; i = 0; val = 4294967295; byte_length = bit_length(text_string) / 8; binary_string = decode(replace(text_string, E'\\', E'\\\\'), 'escape'); LOOP val = (val # get_byte(binary_string, i))::bigint; i = i + 1; j = 0; LOOP val = ((val >> 1) # (3988292384 * (val & 1)))::bigint; j = j + 1; IF j >= 8 THEN EXIT; END IF; END LOOP; IF i >= byte_length THEN EXIT; END IF; END LOOP; RETURN (val # 4294967295); END $$ IMMUTABLE LANGUAGE plpgsql; |
Verifique el resultado de reescritura.
1 2 3 4 5 |
select crc32(null),crc32(''),crc32('1'); crc32 | crc32 | crc32 -------+-------+------------ | 0 | 2212294583 (1 row) |
Para obtener detalles sobre cómo usar funciones definidas por el usuario, consulte la sección CREATE FUNCTION.
Tema principal: Uso de la base de datos
Comentarios
¿Le pareció útil esta página?
Deje algún comentario
Muchas gracias por sus comentarios. Seguiremos trabajando para mejorar la documentación.
El sistema está ocupado. Vuelva a intentarlo más tarde.