database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 21505 게시물 읽기
No. 21505
가상 필드를 만들어서 임의의 데이터를 넣을수 있나요?
작성자
snagwoon(momohead)
작성일
2004-04-14 15:40
조회수
4,144

테이블 a

+===+===+===+

| x  | y   | z  |

+===+===+===+

| 1  | 2   | 3  |

| 4  | 3   | 3  |

| 2  | 4   | 5  |

| 1  | 1   | 2  |

| 3  | 2   | 9  |

+===+===+===+

이런 테이블이 있을때

select x,y,z from a where x like '%3%' or y like '%3%' or z like '%3%';

이렇게 출력을 하면

 

테이블 a

+===+===+===+

| x  | y   | z  |

+===+===+===+

| 1  | 2   | 3  |

| 4  |   | 3  |

3  | 2   | 9  |

+===+===+===+

 

이렇게 나올텐데

 

+===+===+===+===+

| x  | y   | z  | h   |

+===+===+===+===+

| 1  | 2   | 3  |검색|

| 4  | 3   | 3  |검색|

| 3  | 2   | 9  |검색|

+===+===+===+===+

 

이렇게 임의의 필드를 만들어서 임의의 값을 넣어서 출력하는 방법이 있긴 있습니까?

my-sql를 쓰고 있는데요.. 꼭 좀 필요해서 도움을 요청합니다.

고수분들 좋은 답변 부탁드리겠습니다.(__)

이 글에 대한 댓글이 총 5건 있습니다.

select x, y, z, '검색' as h from ~ ?

성혁(dsh)님이 2004-04-14 16:15에 작성한 댓글입니다.

핫.. 그런데 이상한 점이 있습니다..T^T

 

select x,y,z, '검색' as h from a ~ union

select x,y,z, '하하하' as h from b ~

 

b 테이블에는 h필드에 '하하하'가 안들어가고 '하하' 이렇게 두글자만 들어 가네요..

위에서 '검색'이라는 거에 영향을 미치는거 같은데요.. 이런 경우는 어떻게 해야 하나요?

snagwoon(momohead)님이 2004-04-14 17:37에 작성한 댓글입니다.

mysql 사이트에 있는 메뉴얼을 보니 아래와 같은 설명이 있습니다.

4.1.1 이후 버전을 사용해야한다는 얘기네요.

 

http://dev.mysql.com/doc/mysql/en/UNION.html

 

The types and lengths of the columns in the result set of a UNION take into account the values retrieved by all the SELECT statements. Before MySQL 4.1.1, a limitation of UNION is that only the values from the first SELECT were used to determine result column types and lengths. This could result in value truncation if, for example, the first SELECT retrieves shorter values than the second SELECT:

 

mysql> SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10);

+---------------+

| REPEAT('a',1) |

+---------------+

| a |

| b |

+---------------+

 

That limitation has been removed as of MySQL 4.1.1:

 

mysql> SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10);

+---------------+

| REPEAT('a',1) |

+---------------+

| a |

| bbbbbbbbbb |

+---------------+

 

강정원님이 2004-04-14 19:19에 작성한 댓글입니다. Edit

답변 감사합니다. 그런데..

repeat 같은 경우는 같은 문자를 반복해서 넣는거 같군요..

 

select x,y,z, '$a' as h from a ~ union

select x,y,z, '$b' as h from b ~

 

어떻게 방법이 없겠습니까?

snagwoon(momohead)님이 2004-04-16 00:50에 작성한 댓글입니다.

비슷한 문제로 해결책을 찾어보다가 이 게시물을 보고 메뉴얼을 보던중 mysql 매뉴얼 코멘트에 유용한 내용이 있어서 옮겨놓습니다.

 

Queries such as

SELECT c1,NULL AS c2,c3 FROM t1 UNION c1,c2,NULL AS c3 FROM t2 ORDER BY c1;

can be made to work as expected (in MySQL versions from 4.0.3 to 4.1.1) by using an always true or always false IF function in the appropriate column of the first select.

SELECT c1,IF(1,NULL,c2) AS c2,c3 FROM t1 UNION c1,c2,NULL AS c3 FROM t2 ORDER BY c1;

 

The IF function will use the type of the non-NULL value where a NULL value is encounted.

 

It apparently also works for expanding the length of static string values. That is:

SELECT 'a value' AS c UNION SELECT 'another value' AS c;

can be made to work as expected by modifying it thus:

SELECT IF(1,'a value',REPEAT(' ',20)) AS c UNION SELECT 'another value' AS c;

 

박성엽(comdemo)님이 2005-07-28 01:21에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
21508MySQL 책 보다가.. 테이블 분리에 대해서.. [6]
최해길
2004-04-16
2392
21507지정되어 있던 FOREIGN KEY 속성을 없애려고 합니다. 도와주시겠어요? [9]
mhj
2004-04-16
3636
21506[질문] group by... [3]
김대근
2004-04-14
1331
21505가상 필드를 만들어서 임의의 데이터를 넣을수 있나요? [5]
snagwoon
2004-04-14
4144
21504[질문]오라클 -> mysql 포팅... [1]
김대근
2004-04-14
1214
21503서로다른 Host의 DB간 조회 및 insert가 가능한가요? [3]
최희준
2004-04-14
1604
21502mysqladmin에 대해서.. [1]
이승용
2004-04-14
1417
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다