作者 主題: select 資料庫型態問題  (閱讀 4530 次)

0 會員 與 1 訪客 正在閱讀本文。

ihy08

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
select 資料庫型態問題
« 於: 2007-10-16 14:09 »
最近遇到一個問題!


當number的資料型態為 int 時,執行下面mysql語法 ,會有值出現,
但 當資料型態為 varcher 時,卻不會有值出現。

SELECT * FROM `style_change` WHERE `number`='123456'

請問這是什麼原因!

因為 number 的值有的開頭會有"0" 所以我採用 varcher 資料型態

請問有什麼方式可以,讓資料開頭存在'0',且 用select 能找到資料!!

謝謝!

flylinux

  • 訪客
select 資料庫型態問題
« 回覆 #1 於: 2007-10-16 16:17 »
SELECT * FROM `style_change` WHERE `number` like '%123456'
就可以找到有0123456的值了,或是SELECT * FROM `style_change` WHERE `number` = '0123456'
也行

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
select 資料庫型態問題
« 回覆 #2 於: 2007-10-16 16:37 »
為什麼明明是數值的資料,前面要有零?...

如果只是為了輸出時候前面有零,用 sprintf 去輸出比較對吧...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

ihy08

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
Re: select 資料庫型態問題
« 回覆 #3 於: 2007-10-16 17:31 »
我擷取部份程式(作用~檢測號碼是否重複,重複刪掉其中一個)
代碼: [選擇]

foreach($_sel_del as $p => $o)
    {                                        
      $sal =& $db->getAll('SELECT * FROM `style_change_tmp`
                                     WHERE `phone`=?',array($o['phone']));
            if (PEAR::isError($sal)) die($sal->getDebugInfo());

      $con_sal =count($sal) ;
             
      $sal_num =& $db->getRow('SELECT * FROM `style_change_tmp`
                                      WHERE `phone` = ?',array($o['phone']));
            if (PEAR::isError($sal_num)) die($sal_num->getDebugInfo());
               
            if($con_sal>1)
               {                    
                      foreach($sal as $k => $vv)
                        {
                              $del =& $db->query('DELETE FROM                  
                                             `style_change_tmp`WHERE `id` = ?',
                                                              array($sal_num['id']));
                              if (PEAR::isError($del)) die($del->getDebugInfo());
                         }
                 }          
       }


我所謂的'0',並不是所有的phone的值都會有,可能某部份會有!
因為如果採用int 開頭值是'0',資料庫會自動消除

如果我資料型態用 varchar 在  $sal  就會找不到資料

PS.我用int是可以正常執行,且資料也正確,但資料開頭不為0的才行。

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
Re: select 資料庫型態問題
« 回覆 #4 於: 2007-10-16 17:47 »
引述: "ihy08"
我擷取部份程式(作用~檢測號碼是否重複,重複刪掉其中一個)
代碼: [選擇]

foreach($_sel_del as $p => $o)
    {                                        
      $sal =& $db->getAll('SELECT * FROM `style_change_tmp`
                                     WHERE `phone`=?',array($o['phone']));
            if (PEAR::isError($sal)) die($sal->getDebugInfo());

      $con_sal =count($sal) ;
             
      $sal_num =& $db->getRow('SELECT * FROM `style_change_tmp`
                                      WHERE `phone` = ?',array($o['phone']));
            if (PEAR::isError($sal_num)) die($sal_num->getDebugInfo());
               
            if($con_sal>1)
               {                    
                      foreach($sal as $k => $vv)
                        {
                              $del =& $db->query('DELETE FROM                  
                                             `style_change_tmp`WHERE `id` = ?',
                                                              array($sal_num['id']));
                              if (PEAR::isError($del)) die($del->getDebugInfo());
                         }
                 }          
       }


我所謂的'0',並不是所有的phone的值都會有,可能某部份會有!
因為如果採用int 開頭值是'0',資料庫會自動消除

如果我資料型態用 varchar 在  $sal  就會找不到資料

PS.我用int是可以正常執行,且資料也正確,但資料開頭不為0的才行。


這樣...
我想這是你的想法沒有正確的關係...

phone 本來就不該是"數值",而應該是"字串"...

而字串的比對,你輸入的本來就該有前面的那個0,除非你要用模糊搜索,那就是用 like '%{$search_phone}%' ...
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

ihy08

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
Re: select 資料庫型態問題
« 回覆 #5 於: 2007-10-16 18:06 »
引述: "Darkhero"
這樣...
我想這是你的想法沒有正確的關係...

phone 本來就不該是"數值",而應該是"字串"...

而字串的比對,你輸入的本來就該有前面的那個0,除非你要用模糊搜索,那就是用 like '%{$search_phone}%' ...



謝謝! :D

我改成模糊搜尋,是可以正常執行。

當初考慮到模糊的精確度,所以才沒採用。