Topic: Pubblico - Composto da 6 Posts di 2 Utenti.
| 06 Novembre, 2011 13:56 | #1 | ||
|---|---|---|---|
|
e devo fare in modo che se SPLIT_STR(parentlist, ",", 1) ritorna "1" deve scrivere "0" altrimenti deve scrivere il valore ritornato... come posso fare? |
|||
| 07 Novembre, 2011 09:53 | #2 | ||
|---|---|---|---|
|
Ciao seingh, puoi semplicemente utilizzare un IF: 1if(SPLIT_STR(parentlist, ",", 1)="1","0",SPLIT_STR(parentlist, ",", 1)) Questa istruzione ti permette di verificare il valore restituito dalla funzione; se è uguale a "1" l'IF restituisce "0" altrimenti restituisce il valore della funzione. |
|||
| 07 Novembre, 2011 10:02 | #3 | ||
|---|---|---|---|
|
Un'alternativa potrebbe essere quella di modificare la tua funzione: 1DELIMITER $$ 2 3DROP FUNCTION IF EXISTS `test`.`SPLIT_STR`$$ 4CREATE DEFINER=`root`@`%` FUNCTION `SPLIT_STR`( 5 x VARCHAR(255), 6 delim VARCHAR(12), 7 pos INT 8 ) RETURNS varchar(255) CHARSET latin1 9 10BEGIN 11DECLARE toReturn varchar(255); 12SELECT REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 13 LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 14 delim, '') into toReturn; 15RETURN if(toReturn="1","0",toReturn); 16END$$ 17 18DELIMITER ; Spero che la funzione sia chiara. Se il tuo "1" col quale confrontare la stringa in realtà non è statico ma dinamico potresti prenderlo in input. Penso che questa sia una soluzione più elegante ed efficace in quanto non modifichi la tua query ma è proprio la funzione a restituirti ciò che ti interessa. |
|||
| 07 Novembre, 2011 17:23 | #4 | ||
|---|---|---|---|
|
innanzitutto grazie per le risposte ;) 1DELIMITER $$ e 1CREATE DEFINER=`root`@`%` FUNCTION `SPLIT_STR` |
|||
| 07 Novembre, 2011 17:37 | #5 | ||
|---|---|---|---|
|
Scusami ho testato lo script sulla mia macchina e ho dimenticato di eliminare le parti non necessarie prima di postarlo. Comunque sia l'istruzione delimiter non fa altro che definire un nuovo separatore per le istruzioni che dai allo script. Per quanto riguarda il definer definisce il contesto di sicurezza che si deve utilizzare per vedere se si hanno o meno privilegi di accesso e scrittura. Se non lo definisci in automatico mysql prende quelli dell'utente corrente. |
|||
| 07 Novembre, 2011 18:08 | #6 | ||
|---|---|---|---|
|
ok grazie mille ;) |
|||
Condividi su:
Loggati o Registrati per replicare