152 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			152 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								DROP TABLE IF EXISTS t1;
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE IF EXISTS p1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 ( number INT NOT NULL, alpha CHAR(6) NOT NULL );
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES (1413006,'idlfmv'),
							 | 
						||
| 
								 | 
							
								(1413065,'smpsfz'),(1413127,'sljrhx'),(1413304,'qerfnd');
							 | 
						||
| 
								 | 
							
								SELECT number, alpha, CONCAT_WS('<---->',number,alpha) AS new
							 | 
						||
| 
								 | 
							
								FROM t1 GROUP BY number;
							 | 
						||
| 
								 | 
							
								number	alpha	new
							 | 
						||
| 
								 | 
							
								1413006	idlfmv	1413006<---->idlfmv
							 | 
						||
| 
								 | 
							
								1413065	smpsfz	1413065<---->smpsfz
							 | 
						||
| 
								 | 
							
								1413127	sljrhx	1413127<---->sljrhx
							 | 
						||
| 
								 | 
							
								1413304	qerfnd	1413304<---->qerfnd
							 | 
						||
| 
								 | 
							
								SELECT CONCAT_WS('<---->',number,alpha) AS new
							 | 
						||
| 
								 | 
							
								FROM t1 GROUP BY new LIMIT 1;
							 | 
						||
| 
								 | 
							
								new
							 | 
						||
| 
								 | 
							
								1413006<---->idlfmv
							 | 
						||
| 
								 | 
							
								SELECT number, alpha, CONCAT_WS('<->',number,alpha) AS new
							 | 
						||
| 
								 | 
							
								FROM t1 GROUP BY new LIMIT 1;
							 | 
						||
| 
								 | 
							
								number	alpha	new
							 | 
						||
| 
								 | 
							
								1413006	idlfmv	1413006<->idlfmv
							 | 
						||
| 
								 | 
							
								SELECT number, alpha, CONCAT_WS('-',number,alpha,alpha,alpha,alpha,alpha,alpha,alpha) AS new
							 | 
						||
| 
								 | 
							
								FROM t1 GROUP BY new LIMIT 1;
							 | 
						||
| 
								 | 
							
								number	alpha	new
							 | 
						||
| 
								 | 
							
								1413006	idlfmv	1413006-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv-idlfmv
							 | 
						||
| 
								 | 
							
								SELECT number, alpha, CONCAT_WS('<------------------>',number,alpha) AS new
							 | 
						||
| 
								 | 
							
								FROM t1 GROUP BY new LIMIT 1;
							 | 
						||
| 
								 | 
							
								number	alpha	new
							 | 
						||
| 
								 | 
							
								1413006	idlfmv	1413006<------------------>idlfmv
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								create table t1 (a char(4), b double, c date, d tinyint(4));
							 | 
						||
| 
								 | 
							
								insert into t1 values ('AAAA', 105, '2003-03-01', 1);
							 | 
						||
| 
								 | 
							
								select * from t1 where concat(A,C,B,D) = 'AAAA2003-03-011051';
							 | 
						||
| 
								 | 
							
								a	b	c	d
							 | 
						||
| 
								 | 
							
								AAAA	105	2003-03-01	1
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -4);
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a-4
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -4.5);
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a-4.5
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -(4 + 1));
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a-5
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', 4 - 5);
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a-1
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -'3');
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a-3
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -concat('3',4));
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a-34
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -0);
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a0
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -0.0);
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a0.0
							 | 
						||
| 
								 | 
							
								select 'a' union select concat('a', -0.0000);
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								a0.0000
							 | 
						||
| 
								 | 
							
								select concat((select x from (select 'a' as x) as t1 ),
							 | 
						||
| 
								 | 
							
								(select y from (select 'b' as y) as t2 )) from (select 1 union select 2 )
							 | 
						||
| 
								 | 
							
								as t3;
							 | 
						||
| 
								 | 
							
								concat((select x from (select 'a' as x) as t1 ),
							 | 
						||
| 
								 | 
							
								(select y from (select 'b' as y) as t2 ))
							 | 
						||
| 
								 | 
							
								ab
							 | 
						||
| 
								 | 
							
								ab
							 | 
						||
| 
								 | 
							
								create table t1(f1 varchar(6)) charset=utf8;
							 | 
						||
| 
								 | 
							
								insert into t1 values ("123456");
							 | 
						||
| 
								 | 
							
								select concat(f1, 2) a from t1 union select 'x' a from t1;
							 | 
						||
| 
								 | 
							
								a
							 | 
						||
| 
								 | 
							
								1234562
							 | 
						||
| 
								 | 
							
								x
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (c1 varchar(100), c2 varchar(100));
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('',''), ('','First'), ('Random','Random');
							 | 
						||
| 
								 | 
							
								SELECT * FROM t1 WHERE CONCAT(c1,' ',c2) REGEXP 'First.*';
							 | 
						||
| 
								 | 
							
								c1	c2
							 | 
						||
| 
								 | 
							
									First
							 | 
						||
| 
								 | 
							
								DROP TABLE t1;
							 | 
						||
| 
								 | 
							
								# End of 5.0 tests
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #44743: Join in combination with concat does not always work
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE TABLE t1 (
							 | 
						||
| 
								 | 
							
								a VARCHAR(100) NOT NULL DEFAULT '0',
							 | 
						||
| 
								 | 
							
								b VARCHAR(2) NOT NULL DEFAULT '',
							 | 
						||
| 
								 | 
							
								c VARCHAR(2) NOT NULL DEFAULT '',
							 | 
						||
| 
								 | 
							
								d TEXT NOT NULL,
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (a, b, c),
							 | 
						||
| 
								 | 
							
								KEY (a)
							 | 
						||
| 
								 | 
							
								) DEFAULT CHARSET=utf8;
							 | 
						||
| 
								 | 
							
								INSERT INTO t1 VALUES ('gui_A', 'a', 'b', 'str1'),
							 | 
						||
| 
								 | 
							
								('gui_AB', 'a', 'b', 'str2'), ('gui_ABC', 'a', 'b', 'str3');
							 | 
						||
| 
								 | 
							
								CREATE TABLE t2 (
							 | 
						||
| 
								 | 
							
								a VARCHAR(100) NOT NULL DEFAULT '',
							 | 
						||
| 
								 | 
							
								PRIMARY KEY (a)
							 | 
						||
| 
								 | 
							
								) DEFAULT CHARSET=latin1;
							 | 
						||
| 
								 | 
							
								INSERT INTO t2 VALUES ('A'), ('AB'), ('ABC');
							 | 
						||
| 
								 | 
							
								SELECT CONCAT('gui_', t2.a), t1.d FROM t2 
							 | 
						||
| 
								 | 
							
								LEFT JOIN t1 ON t1.a = CONCAT('gui_', t2.a) AND t1.b = 'a' AND t1.c = 'b';
							 | 
						||
| 
								 | 
							
								CONCAT('gui_', t2.a)	d
							 | 
						||
| 
								 | 
							
								gui_A	str1
							 | 
						||
| 
								 | 
							
								gui_AB	str2
							 | 
						||
| 
								 | 
							
								gui_ABC	str3
							 | 
						||
| 
								 | 
							
								EXPLAIN SELECT CONCAT('gui_', t2.a), t1.d FROM t2 
							 | 
						||
| 
								 | 
							
								LEFT JOIN t1 ON t1.a = CONCAT('gui_', t2.a) AND t1.b = 'a' AND t1.c = 'b';
							 | 
						||
| 
								 | 
							
								id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t2	index	NULL	PRIMARY	102	NULL	3	Using index
							 | 
						||
| 
								 | 
							
								1	SIMPLE	t1	eq_ref	PRIMARY,a	PRIMARY	318	func,const,const	1	
							 | 
						||
| 
								 | 
							
								DROP TABLE t1, t2;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #50096: CONCAT_WS inside procedure returning wrong data
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1(a varchar(255), b int, c int)
							 | 
						||
| 
								 | 
							
								SET @query = CONCAT_WS(",", a, b, c);
							 | 
						||
| 
								 | 
							
								CALL p1("abcde", "0", "1234");
							 | 
						||
| 
								 | 
							
								SELECT @query;
							 | 
						||
| 
								 | 
							
								@query
							 | 
						||
| 
								 | 
							
								abcde,0,1234
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug #40625: Concat fails on DOUBLE values in a Stored Procedure,
							 | 
						||
| 
								 | 
							
								#             while DECIMAL works
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE PROCEDURE p1()
							 | 
						||
| 
								 | 
							
								BEGIN
							 | 
						||
| 
								 | 
							
								DECLARE v1 DOUBLE(10,3);
							 | 
						||
| 
								 | 
							
								SET v1= 100;
							 | 
						||
| 
								 | 
							
								SET @s = CONCAT('########################################', 40 , v1);
							 | 
						||
| 
								 | 
							
								SELECT @s;
							 | 
						||
| 
								 | 
							
								END;//
							 | 
						||
| 
								 | 
							
								CALL p1();
							 | 
						||
| 
								 | 
							
								@s
							 | 
						||
| 
								 | 
							
								########################################40100.000
							 | 
						||
| 
								 | 
							
								CALL p1();
							 | 
						||
| 
								 | 
							
								@s
							 | 
						||
| 
								 | 
							
								########################################40100.000
							 | 
						||
| 
								 | 
							
								DROP PROCEDURE p1;
							 | 
						||
| 
								 | 
							
								# End of 5.1 tests
							 |