Cuerda fija 

Una cadena de longitud fija de N bytes (ni caracteres ni puntos de código).

Para declarar una columna de FixedString tipo, utilice la siguiente sintaxis:

<column_name> FixedString(N)

Donde N es un número natural.

El FixedString tipo es eficiente cuando los datos tienen la longitud de N byte. En todos los demás casos, es probable que reduzca la eficiencia.

Ejemplos de los valores que se pueden almacenar eficientemente en FixedStringescrito columnas:

  • La representación binaria de direcciones IP (FixedString(16) para IPv6).
  • Language codes (ru_RU, en_US … ).
  • Currency codes (USD, RUB … ).
  • Representación binaria de hashes (FixedString(16) para MD5, FixedString(32) para SHA256).

Para almacenar valores UUID, utilice el UUID tipo de datos.

Al insertar los datos, ClickHouse:

  • Complementa una cadena con bytes nulos si la cadena contiene menos de N byte.
  • Lanza el Too large value for FixedString(N) excepción si la cadena contiene más de N byte.

Al seleccionar los datos, ClickHouse no elimina los bytes nulos al final de la cadena. Si utiliza el WHERE cláusula, debe agregar bytes nulos manualmente para que coincida con el FixedString valor. En el ejemplo siguiente se muestra cómo utilizar el WHERE cláusula con FixedString.

Consideremos la siguiente tabla con el único FixedString(2) columna:

┌─name──┐
│ b     │
└───────┘

Consulta SELECT * FROM FixedStringTable WHERE a = 'b' no devuelve ningún dato como resultado. Debemos complementar el patrón de filtro con bytes nulos.

SELECT * FROM FixedStringTable
WHERE a = 'b\0'
┌─a─┐
│ b │
└───┘

Este comportamiento difiere de MySQL para el CHAR tipo (donde las cadenas se rellenan con espacios y los espacios se eliminan para la salida).

Tenga en cuenta que la longitud del FixedString(N) el valor es constante. El longitud función devuelve N incluso si el FixedString(N) sólo se rellena con bytes nulos, pero el valor vaciar función devuelve 1 en este caso.

Clasificación: 5 - 1 voto

¿Este contenido fue útil?
★★★★★