Fórum Root.cz
		Hlavní témata => Server => Téma založeno: Tomáš  23. 06. 2014, 11:34:51
		
			
			- 
				Ahoj, měl by jeden hloupý dotaz a ale nepříjemně mě překvapil.
Mám zjednodušený sql příkaz tabulky prijemky, nicméně doklad je VARCHAR(50) a id int(9), vyhledávám podle ID(číslo příjemky) nebo dokladu. Nicméně pokud doklad začíná na číslo je nalezen záznam doklad '3CD...' ale také je převeden id na int a proto my vyhoví i id = 3 kde dělám chybu ? Respektive dá se databáze (MYSQL) donutit nepřekládat string na int ale na null či "" ?
SELECT `prijemky`.*
FROM `prijemky`
WHERE `prijemky`.`doklad` LIKE '3CD%' OR `prijemky`.`id` = '3CD' 
mysql> SELECT `prijemky`.*
    -> FROM `prijemky`
    -> WHERE `prijemky`.`doklad` LIKE '3CD%' OR `prijemky`.`id` = '3CD' ;
+----+-----------+----------------+---------------+----------+---------------------+----------------+---------------------+------+
| id | doklad    | dodavatel      | datum_prijeti | poznamka | vlozeno             | zamestnanec_id | upraveno            | stav |
+----+-----------+----------------+---------------+----------+---------------------+----------------+---------------------+------+
|  3 | 214000915 | FIRMA | 2014-01-15    |          | 2014-01-16 14:01:10 |              6 | 2014-01-20 11:34:48 |    1 |
+----+-----------+----------------+---------------+----------+---------------------+----------------+---------------------+------+
1 row in set, 1 warning (0.00 sec)
			 
			
			- 
				Stačí neporovnávat mezi sebou string a integer.
			
 
			
			- 
				Děkuji, ale to mi taky došlo. 
Samozřejmě můžu přidat funkci a testovat vstup pak rozhodnout jakou variantu zvolit. Ale co když doklad  bude 234 ? Nebo budu požadovat po uživateli výběr hledaného sloupce ID/DOKLAD. Nicméně považuju to za krok zpět. Proto hledám zda není cesta přes sql.
			 
			
			- 
				SELECT `prijemky`.*
FROM `prijemky`
WHERE `prijemky`.`doklad` LIKE '3CD%' OR `prijemky`.`id` LIKE '3CD' 
			 
			
			- 
				cital som tvoju otazku viac krat asi chces toto:
SELECT `prijemky`.*
FROM `prijemky`
WHERE `prijemky`.`doklad` LIKE '3CD%' OR (`prijemky`.`id` = '3CD' and '3CD' REGEXP '[0-9]+')
			 
			
			- 
				alebo pouzi BINARY na ten string s ID