Computes the hash of a STRING or
BYTES value, using the SHA-512 algorithm.
FARM_FINGERPRINT
FARM_FINGERPRINT(value)
Description
Computes the fingerprint of the STRING or BYTES input using the
Fingerprint64 function from the
open-source FarmHash library. The output
of this function for a particular input will never change.
Return type
INT64
Examples
WITHexampleAS(SELECT1ASx,"foo"ASy,trueASzUNIONALLSELECT2ASx,"apple"ASy,falseASzUNIONALLSELECT3ASx,""ASy,trueASz)SELECT*,FARM_FINGERPRINT(CONCAT(CAST(xASSTRING),y,CAST(zASSTRING)))ASrow_fingerprintFROMexample;/*---+-------+-------+----------------------* | x | y | z | row_fingerprint | +---+-------+-------+----------------------+ | 1 | foo | true | -1541654101129638711 | | 2 | apple | false | 2794438866806483259 | | 3 | | true | -4880158226897771312 | *---+-------+-------+----------------------*/
SHA1
SHA1(input)
Description
Computes the hash of the input using the
SHA-1 algorithm. The input can either be
STRING or BYTES. The string version treats the input as an array of bytes.
This function returns 20 bytes.
Return type
BYTES
Example
SELECTSHA1("Hello World")assha1;-- Note that the result of SHA1 is of type BYTES, displayed as a base64-encoded string./*------------------------------* | sha1 | +------------------------------+ | Ck1VqNd45QIvq3AZd8XYQLvEhtA= | *------------------------------*/
SHA256
SHA256(input)
Description
Computes the hash of the input using the
SHA-256 algorithm. The input can either be
STRING or BYTES. The string version treats the input as an array of bytes.
This function returns 32 bytes.
Return type
BYTES
Example
SELECTSHA256("Hello World")assha256;
SHA512
SHA512(input)
Description
Computes the hash of the input using the
SHA-512 algorithm. The input can either be
STRING or BYTES. The string version treats the input as an array of bytes.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[],null,["# Hash functions in GoogleSQL\n\nGoogleSQL for Spanner supports the following hash functions.\n\nFunction list\n-------------\n\n`FARM_FINGERPRINT`\n------------------\n\n FARM_FINGERPRINT(value)\n\n**Description**\n\nComputes the fingerprint of the `STRING` or `BYTES` input using the\n`Fingerprint64` function from the\n[open-source FarmHash library](https://github.com/google/farmhash). The output\nof this function for a particular input will never change.\n\n**Return type**\n\nINT64\n\n**Examples** \n\n WITH example AS (\n SELECT 1 AS x, \"foo\" AS y, true AS z UNION ALL\n SELECT 2 AS x, \"apple\" AS y, false AS z UNION ALL\n SELECT 3 AS x, \"\" AS y, true AS z\n )\n SELECT\n *,\n FARM_FINGERPRINT(CONCAT(CAST(x AS STRING), y, CAST(z AS STRING)))\n AS row_fingerprint\n FROM example;\n /*---+-------+-------+----------------------*\n | x | y | z | row_fingerprint |\n +---+-------+-------+----------------------+\n | 1 | foo | true | -1541654101129638711 |\n | 2 | apple | false | 2794438866806483259 |\n | 3 | | true | -4880158226897771312 |\n *---+-------+-------+----------------------*/\n\n`SHA1`\n------\n\n SHA1(input)\n\n**Description**\n\nComputes the hash of the input using the\n[SHA-1 algorithm](https://en.wikipedia.org/wiki/SHA-1). The input can either be\n`STRING` or `BYTES`. The string version treats the input as an array of bytes.\n\nThis function returns 20 bytes.\n| **Warning:** SHA1 is no longer considered secure. For increased security, use another hashing function.\n\n**Return type**\n\n`BYTES`\n\n**Example** \n\n SELECT SHA1(\"Hello World\") as sha1;\n\n -- Note that the result of SHA1 is of type BYTES, displayed as a base64-encoded string.\n /*------------------------------*\n | sha1 |\n +------------------------------+\n | Ck1VqNd45QIvq3AZd8XYQLvEhtA= |\n *------------------------------*/\n\n`SHA256`\n--------\n\n SHA256(input)\n\n**Description**\n\nComputes the hash of the input using the\n[SHA-256 algorithm](https://en.wikipedia.org/wiki/SHA-2). The input can either be\n`STRING` or `BYTES`. The string version treats the input as an array of bytes.\n\nThis function returns 32 bytes.\n\n**Return type**\n\n`BYTES`\n\n**Example** \n\n SELECT SHA256(\"Hello World\") as sha256;\n\n`SHA512`\n--------\n\n SHA512(input)\n\n**Description**\n\nComputes the hash of the input using the\n[SHA-512 algorithm](https://en.wikipedia.org/wiki/SHA-2). The input can either be\n`STRING` or `BYTES`. The string version treats the input as an array of bytes.\n\nThis function returns 64 bytes.\n\n**Return type**\n\n`BYTES`\n\n**Example** \n\n SELECT SHA512(\"Hello World\") as sha512;"]]