Jump to content
php.lv forumi

Kā lai iziet cauri db, izmainot katrā ierakstā datus


Recommended Posts

Posted (edited)

Aptuveni 3000 ieraksti datubāzē kuros vienā laukā vajag izdzēst konkrētas frāzes.

 

Vai to var izdarīt ar kādu mysql vaicājumu?

 

Kā Jūs ieteiktu to risināt?

 

EDIT.

 

Piemēra situācija db:

id | info | teksts

1 | test | Mani sauc Jēkabs
2 | test | Mani sauc Juris
3 | test | Mani sauc Laimonis
4 | test | Mani sauc Didzis
5 | test | Mani sauc Ēriks
... utt ...

 

Nepieciešams izdzēst "Mani sauc " no visiem datubāzes ierakstiem.

Edited by pilots
Posted
Nepieciešams izdzēst "Mani sauc " no visiem datubāzes ierakstiem.

 

Ja kā izrādās visas frāzes ir sākumā, tad substring f-ja arī strādātu, vienkārši nogriežam sākumu nost.

Posted

mazliet paturpināšu tēmu.

 

man vajag, lai tabulas laukos, kuros ir vārds 'Didzis' tiktu papildināts ar vārdiem- "Es esmu laimīgs, ka ":

 

id | info | teksts

1 | test | Mani sauc Jēkabs
2 | test | Mani sauc Juris
3 | test | Mani sauc Laimonis
4 | test | Es esmu laimīgs, ka Mani sauc Didzis
5 | test | Mani sauc Ēriks

 

kā tas izdarāms, jo ar vienkārši reilpeisošanu te nesanāks?

Posted (edited)

nevar kaut ko tadu

 

update SET teksts = concat('Es esmu laimīgs, ka', teksts) WHERE teksts LIKE %Didzis%.

 

ps.

paskaties ka contcat syntakse pareizi rakstas

Edited by cucumber
Posted (edited)

vel jautājums, kā lai procedūrai vērtību raksta aiz LIKE

 

DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`tabulas_update`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tabulas_update`(IN pieliekama_value TINYTEXT, IN saturosa_value TINYTEXT)
BEGIN
UPDATE tb_options SET option_name = concat(pieliekama_value, option_name) 
WHERE option_name LIKE saturosa_value;
END$$
DELIMITER;

 

es gribu procedūrai padodamo vērtību ielikt šādi: LIKE %saturosa_value% - bet tā viņam nepatīk;

kad lieku šādi: LIKE '%saturosa_value%' tad vins to vairs neaprot par mainīgo;

 

kā būt?

Edited by 7924
Posted (edited)
Vai manīgajam gadījuumā nebija @ zīme priekšā?

 

Skiet ka @ bija jaliek prieksa globalajiem mainigajiem

 

DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`tabulas_update`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tabulas_update`(IN pieliekama_value TINYTEXT, IN saturosa_value TINYTEXT)
BEGIN
SET @aaa=saturosa_value;
UPDATE tb_options SET option_name = concat(pieliekama_value, option_name) 
WHERE option_name LIKE %@aaa%;
END$$
DELIMITER;

 

tāpatās neņem pretī :(

 

 

 

andrisp, Tu esi superhero, strādā šis:

 

DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`tabulas_update`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `tabulas_update`(IN pieliekama_value TINYTEXT, IN saturosa_value TINYTEXT)
BEGIN
SET @aaa=saturosa_value;
UPDATE tb_options SET option_name = concat(pieliekama_value, option_name) 
WHERE option_name LIKE concat('%', @aaa, '%', '');
END$$
DELIMITER;

 

strādā gan ar atsevišķi globālo mainīgo @aaa, gan arī ar iekšējo mainīgo: saturosa_value bez "@" :)

Edited by 7924
×
×
  • Create New...