Как добавить $ и десятичную к столбцу в mysql - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь добавить десятичную и $ для всех строк в таблице. Некоторые строки имеют $ и. в правильном месте. Я искал здесь, но не нашел аналогичного вопроса, когда у вас есть 2 разных типа чисел.

Текущий формат выглядит следующим образом:

Item 1    $10.00
Item 2    10
Item 3    99.99
Item 4    $120.00

Мне нужно, чтобы он выглядел следующим образом.

Item 1    $10.00
Item 2    $10.00
Item 3    $99.99
Item 4    $120.00

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Попробуйте этот код

Update your_table_name, 
       (SELECT name, CONCAT('$',CAST(REPLACE(value, ',', '.') as DECIMAL(20,2))) as new_value 
        FROM `your_table_name` WHERE INSTR(`value`, '$') = 0) A 
SET your_table_name.value= A.new_value
WHERE your_table_name.name = A.name AND INSTR(your_table_name.`value`, '$') = 0
0 голосов
/ 09 марта 2020

Я бы порекомендовал использовать 2 разных столбца для символа валюты и фактического значения, чтобы вы могли легко суммировать и подгонять их.

, но если вы хотите это.

Используйте

UPDATE table1 SET `value` = CONCAT('$',TRUNCATE(`value`,2)) WHERE `value` NOT LIKE '$%'

TRUNCATE используется, чтобы дать числам 2 цифры

CREATE TABLE table1 (
  `name` VARCHAR(6),
  `value` VARCHAR(7)
);

INSERT INTO table1
  (`name`, `value`)
VALUES
  ('Item 1', '$10.00'),
  ('Item 2', '10'),
  ('Item 3', '99.99'),
  ('Item 4', '$120.00');
✓

✓
SELECT * FROM table1 WHERE `value` NOT LIKE '$%'
name   | value
:----- | :----
Item 2 | 10   
Item 3 | 99.99
UPDATE table1 SET `value` = CONCAT('$',TRUNCATE(`value`,2)) WHERE `value` NOT LIKE '$%'
SELECT * FROM table1
name   | value  
:----- | :------
Item 1 | $10.00 
Item 2 | $10.00 
Item 3 | $99.99 
Item 4 | $120.00

db <> скрипка здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...