7 сентября 2015
Нет комментариев
SELECT * FROM `tablename` WHERE `fieldname` REGEXP '^[0-9]+$'
пример update:
UPDATE `tablename` SET `field_en`=`field_ru` WHERE `field_ru` REGEXP '^[0-9]+$';
SELECT * FROM `tablename` WHERE `fieldname` REGEXP '^[0-9]+$'
пример update:
UPDATE `tablename` SET `field_en`=`field_ru` WHERE `field_ru` REGEXP '^[0-9]+$';
$arrs=array('_GET','_POST','_COOKIE'); foreach($arrs as $arr_key=>$arr_value){ if(is_array($$arr_value)){ foreach($$arr_value as $key=>$value){ $nbz1=substr_count($value,'--'); $nbz2=substr_count($value,'/*'); $nbz3=substr_count($value,"'"); $nbz4=substr_count($value,'"'); if($nbz1>0||$nbz2>0||$nbz3>0||$nbz4>0){ Print404(); exit(); } } } }
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=83821
Увеличить значения какого либо поля на указанный процент от текущего значения для всех или группы строк:
UPDATE `tablename` SET `fieldname`=`fieldname`+(`fieldname`/100*процент)
Конкретный пример:
увеличить цену всех позиций каталога на 30% кроме тех, которые находятся в подкатегориях категории с id 203.
UPDATE `catalog` SET `price`=`price`+(`price`/100*30) WHERE `parent` NOT IN (SELECT id FROM `razdel` WHERE `parent`='203')
$qpos=mysql_query('SELECT COUNT(*) FROM table WHERE pos<'.$data['pos']); $rpos=mysql_fetch_array($qpos); $pos=$rpos[0]+1;
Было актуально для импорта большого csv, для экономии ресурсов на разборку файла при помощи php.
LOAD DATA LOCAL INFILE "file_name.csv" INTO TABLE table_name COLUMNS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
Готовый пример php:
mysql_query("TRUNCATE TABLE `bitrix_catalog`;"); mysql_query("LOAD DATA LOCAL INFILE \"".$file_catalog_path."\" INTO TABLE bitrix_catalog COLUMNS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;");
SELECT COUNT(*) FROM ( (SELECT DISTINCT `id` FROM `tbl_1` WHERE 1) UNION ALL (SELECT DISTINCT `id` FROM `tbl_2` WHERE 1) UNION ALL (SELECT DISTINCT `id` FROM `tbl_3` WHERE 1) ) AS t1;
Чтобы, например, при поиске в таблице не учитывались html теги вместо LIKE стоит использовать REGEXP. Пример в двумя вариантами:
SELECT * from `tablename` WHERE ( `name` LIKE '%строка поиска%') OR ( `content` REGEXP '>[^<]*строка поиска');