Как только вы начнете менять положение вещей, вы можете просто представить Аляску и Гавайи квадратными прямоугольниками где-нибудь в Мексиканском заливе. Это было бы дополнительным преимуществом, позволяющим узнать, какого цвета были Гавайи.
Вы, вероятно, могли бы тогда просто пройти весь путь и использовать искаженную систему, где каждое государство имеет равную площадь, тогда вы могли бы видеть Род-Айленд.
Примеры картограмм США на изображениях Google показывают такие вещи. Не знаю, сколько из них имеют шейп-файлы или данные вместе с ними.
Вы действительно интересуетесь относительными размерами состояний или хотите, чтобы представление позволяло людям увидеть, какое значение имеет состояние?
Эта функция возвращает только цифры 0–9 из строки, что прекрасно решает вашу проблему, независимо от того, какие префиксы или постфиксы у вас есть.
http : //www.artfulsoftware.com/infotree/queries.php? & bw = 1280 # 815
Скопировано здесь для справки:
SET GLOBAL log_bin_trust_function_creators=1;
DROP FUNCTION IF EXISTS digits;
DELIMITER |
CREATE FUNCTION digits( str CHAR(32) ) RETURNS CHAR(32)
BEGIN
DECLARE i, len SMALLINT DEFAULT 1;
DECLARE ret CHAR(32) DEFAULT '';
DECLARE c CHAR(1);
IF str IS NULL
THEN
RETURN "";
END IF;
SET len = CHAR_LENGTH( str );
REPEAT
BEGIN
SET c = MID( str, i, 1 );
IF c BETWEEN '0' AND '9' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END;
UNTIL i > len END REPEAT;
RETURN ret;
END |
DELIMITER ;
SELECT digits('$10.00Fr');
#returns 1000
Это «ужас кодирования», схемы реляционных баз данных не должны НЕ записываться так!
Вам нужно писать сложный и ненужный код для проверки данных.
Попробуйте что-то вроде этого:
SELECT CONCAT('$',(price/1000)) AS Price FROM ...
Кроме того, вы можете использовать float
, double
или real
вместо целого числа.
Если вам нужно хранить данные о валюте, вы можете добавить поле валюты или использовать функции локали системы, чтобы отобразить его в правильном формате.
One approach would be to use REPLACE() function:
UPDATE my_table
SET price = replace(replace(replace(price_display,'Fr',''),'$',''),'.','')
WHERE price_display not regexp format(price/1000, 2);
This works for the examples data you gave:
'$9.99'
'9.99Fr'
Both result in 999 in my test. With an update like this, it's important to be sure to back up the database first, and be cognizant of the formats of the items. You can see all the "baddies" by doing this query:
SELECT DISTINCT price_display
FROM my_table
WHERE price_display not regexp format(price/1000, 2)
ORDER BY price_display;