Mysql

在 MySQL 查詢中,VARCHAR(100) 的輸出為“partnumberp一種r噸n在米b和rpartnumber’ 儘管在具有更多列的查詢中,它仍然顯示為 ‘p-12345’

  • March 14, 2022

這是一個糟糕的問題,因為我只是偶然選擇了一個有垃圾數據並且在測試期間必須更改了 where 條件的客戶端時犯了一個錯誤,而且這也是一個連接問題,我什至沒有在問題中提到導致了這麼多奇怪的[partnumber]條目,限制 10 查詢只顯示那些。所以我認為整個專欄都會有這個價值。我不確定是否應該刪除它。它也可以幫助那些在不知情的情況下擁有垃圾數據的人。如果您認為該問題浪費了您的時間,您可以投票結束該問題。因為我自己認為這可能是在浪費時間閱讀。

在具有許多列的普通SELECT p.* FROM table查詢中,輸出顯示所需列中的值,每個數字都會顯示,僅顯示帶有部分編號的列(部分數字,如 p-12345):

在此處輸入圖像描述

但是,當我只要求僅使用 的那一列時SELECT client_x FROM table,我得到:

在此處輸入圖像描述

更新:

我現在可以看到該列的值了!!它們不再顯示[partnumber]在每一行中,而是其中還有數字和字元串以及空值。

在此處輸入圖像描述

我在其中有客戶端的 where 條件,並且該客戶端的值始終是

$$ partnumber $$. 僅在該客戶端中才是垃圾。 更新結束

列數據類型為varchar(100). 它應該被視為普通字元串。

在此處輸入圖像描述

我使用 DBeaver,但這不應該發揮作用。

如果我將該列與某個字元串連接,則該值將顯示為一個空字元串:

SELECT CONCAT("test", client_x) FROM table

僅返回“測試”作為值。

如何[partnumber]在列輸出中避免此輸出並顯示零件編號字元串,就像我剛執行時顯示的那樣SELECT * FROM table

如果您需要操作數據,則不能使用SELECT *.

如果您看到[partnumber]來自桌子,那麼 GIGO。

注意:MySQL 不使用括號。如果該列被命名為 `partnumber,那麼其中任何一個都可以工作,但括號不會:

partnumber
`partnumber`

其他一些數據庫引擎使用括號。

如果表包含1234567,但您想查看p-1234567

SELECT  CONCAT('p-', partnumber) AS partnumber, ...

如果表格包含p-1234567並且您想要顯示1234567,這是一種假設需要去除前 2 個字元的方法:

SELECT  MID(partnumber, 3) AS partnumber, ...

如果這些都沒有回答你的問題,請改寫它。

引用自:https://dba.stackexchange.com/questions/308648