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

извличане на числа от *varchar* клетка и извършване на математика с тях в чист mysql

Със сигурност може да се направи, но SQL е проектиран около аксиомата на атомните стойности (т.е. първата нормална форма ). Разделянето на поле почти никога не е необходимо. Единственият път, когато ще трябва да го използвате в добре проектирана база данни, е с дати, където може да искате да работите само с месеца или годината на полето за дата. Макар че със сигурност ще откриете бази данни, проектирани от някой идиот, с които сте принудени да работите, които нарушават тази основна концепция, лоша идея е да започнете, като се опитвате да разберете как да работите с тези дизайни.

Освен това последната ви стъпка от „съхраняване в тази клетка 239“ ме кара да мисля, че все още разглеждате бази данни, сякаш са електронни таблици. Те не са. Друг основен компонент на базата данни е, че редът на редовете не е важен. Полетата, от друга страна, винаги са свързани с други полета в същия ред. Може да зададете стойността на едно от полетата да бъде нещо, където полето за идентификация на този запис е 239, но като цяло никога няма да се интересувате от факта, че записът е 239-ти.

Въпреки това, ето заявка, която ще направи това, което искате:

Предположение:форматът на полето е "11a22 b". Тоест двуцифрено число, последвано от буква, последвано от друго двуцифрено число, евентуално последвано от интервал и буквата „b“.

SELECT CAST(SUBSTRING(Value,1,2) AS INT) 
    * CAST(SUBSTRING(Value,3,2) AS INT) 
    + CASE RIGHT(Value,1) WHEN 'b' THEN -1 ELSE 0 END
FROM MyTable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при Unity3D връзката с MySQL

  2. MySQL:Имате грешка във вашия SQL синтаксис... близо до 'desc) VALUES ('Idea','Description')'

  3. Laravel подрежда резултатите по колона в полиморфна таблица

  4. Най-бързият начин да прочетете огромна MySQL таблица в python

  5. Използване на MySQL заявка за преминаване на редове за създаване на рекурсивно дърво