Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/
GaussDB(DWS)/
Perguntas frequentes/
Uso do banco de dados/
Como usar uma função definida pelo usuário para reescrever a função CRC32()?
Atualizado em 2024-05-09 GMT+08:00
Como usar uma função definida pelo usuário para reescrever a função CRC32()?
Atualmente, o GaussDB(DWS) não tem uma função CRC32() embutida. Em vez disso, você pode usar a função definida pelo usuário de GaussDB(DWS) para reescrever a função CRC32().
- CRC32(expr)
- Descrição: calcula a redundância cíclica. O parâmetro de entrada expr é uma cadeia. Se o parâmetro for NULL, NULL é retornado. Caso contrário, um valor não assinado de 32 bits é retornado após o cálculo de redundância.
Exemplo de reescrever a função CRC32() usando a declaração de função definida pelo usuário 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 o resultado da reescrita.
1 2 3 4 5 |
select crc32(null),crc32(''),crc32('1'); crc32 | crc32 | crc32 -------+-------+------------ | 0 | 2212294583 (1 row) |
Para obter detalhes sobre como usar funções definidas pelo usuário, consulte CREATE FUNCTION.
Tópico principal: Uso do banco de dados
Feedback
Esta página foi útil?
Deixar um comentário
Obrigado por seus comentários. Estamos trabalhando para melhorar a documentação.
O sistema está ocupado. Tente novamente mais tarde.