Основной вопрос, является ли ваша валюта является десятичным типа или нет. Ваш формат «1,00,005.00» с группами из двух и три цифры заставляет меня задуматься.
Если это так, если «1,99,997» + «0,00,003» равно «2,00,000», то вы можете использовать ответ Hắc Huyền Minh и сразу же преобразовать его в десятичный эквивалент.
Прежде чем это сделать, я проверил бы приемочный тест в базе данных, чтобы убедиться, что все значения действительно в ожидаемой форме. В противном случае вы можете ввести ошибку в работе. VARCHAR
тип не имеет никакой проверки, и у кого-то может быть зарплата «1,0X, 000,15», которая будет считаться эквивалентной десять после конвертации.
Если ваша валюта не десятичного типа - например, если «1,05,03» означает «one pound five shilling three pennies» - тогда «1,05,03» + «1,19,09» является не «2,24,12», а скорее «3,05,00» - поскольку двенадцать пенни, а не десять, делают шиллинг, и для изготовления фунта требуется двадцать шиллингов.
В этом случае вы либо конвертируете его в десятичный с помощью взвешивания, либо выбираете все строки и делаете сумму в коде вместо MySQL. Было бы также возможно реализовать UDF для выполнения либо суммы, либо преобразования в десятичную.
Для взвешивания вы считаете, что если один фунт состоит из 20 шиллингов, то каждый шиллинг составляет 1/20 одного фунта, и он равен 0,05; поэтому «1,05» становится равным 1 + 5 * 0,05 = 1,25. За гроши двенадцать пенни составляют один шиллинг, который составляет 0,05 фунта, поэтому один пенни составляет 0,05/12 = 0,00416666 ... (и там вы видите трудность. Вам понадобится больший числовой тип, чтобы предотвратить числовые ошибки от ползания).
Какой тип поля зарплаты? – sectus
Тип данных @sectus - 'varchar' – SoftwareDev
Числа не содержат в них запятых ..... если вы сохраняете это в varchar с запятыми, тогда прекратите делать это ..... преобразуйте свое поле в числовое значение и сохранить значение без этих запятых –