中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ERROR 1292 (22007): Truncated incorrect DOUBLE value 和ORA-01722: invalid number

發布時間:2020-08-07 11:51:47 來源:ITPUB博客 閱讀:208 作者:gaopengtttt 欄目:MySQL數據庫
其實這種錯誤和隱式轉換有關
主要是由于轉換的時候不能轉換為期望的格式的然后出的問題
比如 1p這個字符要轉換為 int(number)是不可能的

MYSQL 錯誤模擬如下:


myql> show variables like 'sql_mode%';
+---------------+--------------------------------------------+
| Variable_name | Value                                      |
+---------------+--------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.01 sec)


mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A


Database changed
mysql> create table jjjkk (id varchar(20),name varchar(20));
Query OK, 0 rows affected (0.03 sec)


mysql> insert into jjjkk values('1','gaopeng');
Query OK, 1 row affected (0.00 sec)


mysql> update jjjkk set name='gaop' where id=1;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0


mysql> update jjjkk set name='gaop' where id=1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0


mysql> insert into jjjkk values('1p','gaopeng');
Query OK, 1 row affected (0.01 sec)


mysql> commit;
Query OK, 0 rows affected (0.00 sec)


mysql> update jjjkk set name='gaop' where id=1;
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '1p'




MYSQL 中存在隱式轉換ORACLE中通常會在執行計劃中給出to_char之類的標示
但是MYSQL執行計劃沒有
如上列子雖然'1'可以轉換這個時候沒有報錯。但是新插入的'1p'是不能轉換的
這個在ORACLE中也存在這樣的問題。所以報錯
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '1p'
當然我是嚴格的SQL_MODE,否則則是WARINGS
可以如下試試轉換:
 SELECT CONVERT('1',SIGNED);
 SELECT CONVERT('1p',SIGNED);


然后演示一下ORACLE的報錯:
SQL> create table testmmm( id varchar2(20),name varchar2(20));
Table created


SQL> insert into testmmm values('1','gaopeng');
1 row inserted


SQL> commit;
Commit complete


SQL> select * from testmmm where id=1;
ID                   NAME
-------------------- --------------------
1                    gaopeng


SQL> insert into testmmm values('1p','gaopeng');
1 row inserted


SQL> commit;
Commit complete


SQL> select * from testmmm where id=1;
select * from testmmm where id=1
ORA-01722: invalid number

如果模擬
SQL> select to_number('1p') from dual;
select to_number('1p') from dual
ORA-01722: invalid number


同樣的情況


我們查看一下執行計劃中的隱式轉換信息:
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(TO_NUMBER("ID")=1)
   
僅此記錄MYSQL和ORACLE同樣的報錯
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐清市| 张家川| 灵宝市| 仙居县| 凉城县| 达日县| 庆安县| 永福县| 托克逊县| 洪湖市| 墨脱县| 巴马| 藁城市| 乌审旗| 视频| 盐山县| 乌海市| 焉耆| 雷山县| 元阳县| 平果县| 河南省| 肇源县| 永年县| 沙雅县| 兰考县| 香河县| 宜宾市| 海门市| 大竹县| 梨树县| 阆中市| 广西| 阳西县| 邢台市| 治县。| 通化市| 平江县| 青海省| 中西区| 台北市|