Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работи функцията WEIGHT_STRING() в MySQL

В MySQL, WEIGHT_STRING() функцията връща низа за тегло за входния низ. Връщаната стойност е двоичен низ, който представлява стойността за сравнение и сортиране на низа.

Ако входният низ е недвоична стойност, връщаната стойност съдържа теглата за съпоставяне за низа. Ако е двоична стойност, резултатът е същият като входния низ. Това е така, защото теглото за всеки байт в двоичен низ е стойността на байта.

Тази функция е функция за отстраняване на грешки, предназначена за вътрешна употреба. Може да се използва за тестване и отстраняване на грешки на съпоставяне. Имайте предвид, че поведението му може да се променя между версиите на MySQL.

Синтаксис

Синтаксисът е така:

WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [знамена])

Където str е входният низ. Незадължителният AS клаузата ви позволява да прехвърляте входния низ към даден тип и дължина. Незадължителните flags Аргументът в момента не се използва в MySQL (от версия 8.0).

Пример 1 – Основна употреба

Ето основен пример за използване с недвоичен входен низ:

ИЗБЕРЕТЕ HEX(WEIGHT_STRING('Котка'));

Резултат:

+---------------------+| HEX(WEIGHT_STRING('Котка')) |+---------------------------+| 1C7A1C471E95 |+------------------------------+

Имайте предвид, че използвам HEX() функция за показване на WEIGHT_STRING() резултат. Това е така, защото WEIGHT_STRING() връща двоичен резултат. Можем да използваме HEX() за да покажете резултата във форма за печат.

Ако не използвам HEX() в този пример получавам това:

SELECT WEIGHT_STRING('Котка');

Резултат:

+---------------------+| WEIGHT_STRING('Котка') |+---------------------+| з г? |+---------------------+

Така че само за да стане ясно, ето низа, шестнадесетичното представяне на този низ и шестнадесетичното представяне на низа му за тегло:

SET @str ='Котка';ИЗБЕРЕТЕ @str, HEX(@str), HEX(WEIGHT_STRING(@str));

Резултат:

+------+-----------+-------------------------+ | @str | HEX(@str) | HEX(WEIGHT_STRING(@str)) |+------+-----------+--------------------- -----+| Котка | 436174 | 1C7A1C471E95 |+------+-----------+--------------------------+ 

Пример 2 – Клауза AS

Ето пример за използване на AS клауза за прехвърляне на входния низ към даден тип и дължина.

SET @str ='Cat';SELECT HEX(WEIGHT_STRING(@str AS CHAR(3))) 'Char 3', HEX(WEIGHT_STRING(@str AS CHAR(8))) 'Char 8', HEX( WEIGHT_STRING(@str КАТО BINARY(3))) 'Бинарно 3', HEX(WEIGHT_STRING(@str КАТО BINARY(8))) 'Двоично 8';

Резултат:

+--------------+--------------+----------+----- ------------+| Char 3 | Char 8 | Двоичен 3 | Двоичен 8 |+--------------+--------------+---------+----- ------------+| 1C7A1C471E95 | 1C7A1C471E95 | 436174 | 4361740000000000 |+--------------+--------------+---------+------ ------------+

Пример 3 – Съпоставяне

Следващите два примера демонстрират как низ може да има различно тегло низ, в зависимост от използваното съпоставяне. Съпоставянето, използвано в първия пример, е нечувствително към ударение и без значение на главния и малки букви. Съпоставянето, използвано във втория пример, е чувствително за акцент и малки букви.

SET @upper =_utf8mb4 'CAT' COLLATE utf8mb4_0900_ai_ci;SET @lower =lcase(@upper);SELECT @upper 'String', HEX(@upper) 'Hex', HEX(WEIGHT_STRING(@upper)) 'Тегло String'UNION ALLSELECT @lower, HEX(@lower), HEX(WEIGHT_STRING(@lower));

Резултат:

+--------+-------+--------------+| Низ | Шестнадесетичен | Тегло низ |+--------+-------+--------------+| КОТКА | 434154 | 1C7A1C471E95 || котка | 636174 | 1C7A1C471E95 |+-------+-------+--------------+

И ето същият пример, с изключение на съпоставяне, чувствително на ударение и малки букви.

SET @upper =_utf8mb4 'CAT' COLLATE utf8mb4_0900_as_cs;SET @lower =lcase(@upper);SELECT @upper 'String', HEX(@upper) 'Hex', HEX(WEIGHT_STRING(@upper)) 'Тегло String'UNION ALLSELECT @lower, HEX(@lower), HEX(WEIGHT_STRING(@lower));

Резултат:

+--------+-------+---------------------------- ------------------+| Низ | Шестнадесетичен | Тегло низ |+--------+-------+---------------------------- ------------------+| КОТКА | 434154 | 1C7A1C471E9500000020002000200000000800080008 || котка | 636174 | 1C7A1C471E9500000020002000200000000200020002 |+--------+--------+---------------------------- -----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java:Вмъкнете няколко реда в MySQL с PreparedStatement

  2. предоставя отдалечен достъп до базата данни MySQL от всеки IP адрес

  3. В PHP с PDO, как да проверя окончателната SQL параметризирана заявка?

  4. Функция за ранг в MySQL

  5. Активирайте Python за свързване с MySQL чрез SSH тунелиране