SQL 에서 WHERE 절 이용시..

sadrove의 이미지

테이블을 아래와 같이 만들고요..

				CREATE TABLE test (
				no				INT(10) NOT NULL AUTO_INCREMENT,
				category	TINYTEXT NOT NULL,
				statement	TINYTEXT NOT NULL,
				korean		TINYTEXT NOT NULL,
				path			TINYTEXT NOT NULL,
				PRIMARY KEY (no)

데이터를 넣었습니다..
select * from test where no=1;
이라고 하면 결과가 잘 나옵니다..
그런데
select * from test where korean='난 바본가바';
하면 검색된 레코드가 없다고 나옵니다..
분명히 레코드중에 korean 필드에 '난 바본가바'란 데이터가 있거든요.
혹시나 해서..
select * from test where korean like '난 바본가바';
라고 했는데...역시 검색된 레코드가 없다고 나옵니다..
ㅠ.ㅠ...
틀린 부분이 어디인지...지적 부탁드립니다...

랜덤여신의 이미지

SQL 입력기와 SQL 서버의 캐릭터셋이 다를 수 있습니다.
영문 데이터로 다시 테스트해 보세요.

sadrove의 이미지

인클루드 wrote:
SQL 입력기와 SQL 서버의 캐릭터셋이 다를 수 있습니다.
영문 데이터로 다시 테스트해 보세요.

영문데이터로도 해봤습니다..
결과는 마찬가지...ㅠ.ㅠ..
왜 그럴까요...그다지 어려운 문제도 아닌데..
대체 왜 안되는건지...
혹시 예상할 수 있는 문제점 같은게 있을까요..?..

정태영의 이미지

Quote:
mysql> use test
Database changed
mysql> CREATE TABLE test (
-> no INT(10) NOT NULL AUTO_INCREMENT,
-> category TINYTEXT NOT NULL,
-> statement TINYTEXT NOT NULL,
-> korean TINYTEXT NOT NULL,
-> path TINYTEXT NOT NULL,
-> PRIMARY KEY (no) );
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values ('', 'c1', 'statement', 'korean?', '/home/' );
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where no = 1;
+----+----------+-----------+---------+--------+
| no | category | statement | korean | path |
+----+----------+-----------+---------+--------+
| 1 | c1 | statement | korean? | /home/ |
+----+----------+-----------+---------+--------+
1 row in set (0.00 sec)

mysql> select * from test where korean = 'korean';
Empty set (0.00 sec)

mysql> select * from test where korean = 'korean?';
+----+----------+-----------+---------+--------+
| no | category | statement | korean | path |
+----+----------+-----------+---------+--------+
| 1 | c1 | statement | korean? | /home/ |
+----+----------+-----------+---------+--------+
1 row in set (0.00 sec)

mysql> select * from test where korean = 'korean%';
Empty set (0.00 sec)

mysql> select * from test where korean = 'korean%';
Empty set (0.00 sec)

mysql> select * from test where korean = 'korea%';
Empty set (0.00 sec)

mysql> select * from test where korean = '%rea%';
Empty set (0.00 sec)

mysql> select * from test where korean like '%rea%';
+----+----------+-----------+---------+--------+
| no | category | statement | korean | path |
+----+----------+-----------+---------+--------+
| 1 | c1 | statement | korean? | /home/ |
+----+----------+-----------+---------+--------+
1 row in set (0.00 sec)

mysql>
mysql> select * from test where korean like 'rea%';
Empty set (0.00 sec)

mysql> select * from test where korean like 'korea%';
+----+----------+-----------+---------+--------+
| no | category | statement | korean | path |
+----+----------+-----------+---------+--------+
| 1 | c1 | statement | korean? | /home/ |
+----+----------+-----------+---------+--------+
1 row in set (0.00 sec)

mysql> insert into test values ('', 'c1', 'statement', '한국인인가?', '/home/' );
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where korean like '한국%'; +----+----------+-----------+------------------+--------+
| no | category | statement | korean | path |
+----+----------+-----------+------------------+--------+
| 2 | c1 | statement | 한국인인가? | /home/ |
+----+----------+-----------+------------------+--------+
1 row in set (0.00 sec)

mysql>

잘되는데요 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

sadrove의 이미지

이상하게 아래와 같이 하면 잘 됩니다..
select * from test where korean like '%난 바본가바%';
쩝..좀 찝찝하긴 하지만..되니까 다행이네요..
희안하네~ :D

답변 주신분들 감사드립니다..

eminency의 이미지

아마도 데이터가 insert 될 때 스트링 전후의 공백을 trim 안해준 것 같은데요?

찜찜하시면 간단하게 전후 공백을 잘라내고 다시 update해주는 프로그램을 돌리시는게 좋을 듯 합니다.

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

blueruin의 이미지

sadrove wrote:

select * from test where korean='난 바본가바';
하면 검색된 레코드가 없다고 나옵니다..
분명히 레코드중에 korean 필드에 '난 바본가바'란 데이터가 있거든요.
혹시나 해서..
select * from test where korean like '난 바본가바';
라고 했는데...역시 검색된 레코드가 없다고 나옵니다..

like 절에 % 가 없으면 like 절은 equal 절로 파싱됩니다.
위에 분 말대로 "난 바본가봐" 앞 혹은 뒤에 공백문자나 개행문자가 있는것 같네요.

time to wait...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.