반응형
sql에 두 개의 varchar를 곱하다
시도했지만 오류가 발생했습니다.
MariaDB [test]> create table table1 (length varchar, breadth varchar);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' breadth varchar)' at line 1
MariaDB [test]> create table table1 (length varchar(20), breadth varchar(20));
Query OK, 0 rows affected (0.06 sec)
MariaDB [test]> insert into table1 (length, breadth) values ('12','11');
Query OK, 1 row affected (0.05 sec)
MariaDB [test]> select * from table1;
+--------+---------+
| length | breadth |
+--------+---------+
| 12 | 11 |
+--------+---------+
1 row in set (0.02 sec)
MariaDB [test]> select convert (int, length)*convert(int, breadth) as T from table1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'int, length)*convert(int, breadth) as T fr
om table1' at line 1
MariaDB [test]> select convert(int, length)*convert(int, breadth) as T from table1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'int, length)*convert(int, breadth) as T fr
om table1' at line 1
사용하다cast()
:
select cast(length as int) * cast(breadth as int) as T
from table1;
설명서에서 설명한 바와 같이convert()
는, 다른 문자 세트간에 변환하기 위한 것입니다.MySQL(및 MariaDB)의 용도를 혼동하고 있습니다.convert()
SQL Server를 사용할 수 있습니다.
그나저나, 당신은 심지어 명시적인 것조차 필요 없다.cast()
(최소한 MySQL에서는).엔진은 암묵적인 캐스트를 수행합니다.
select length * breadth as T from table1;
이것은 지원되지만, 저는 암묵적인 캐스팅에 의존하는 것을 별로 옹호하지 않습니다.
SQL 바이올린입니다.
언급URL : https://stackoverflow.com/questions/32654617/multiply-two-varchars-in-sql
반응형
'programing' 카테고리의 다른 글
JSON.parse에서 예외를 포착하는 적절한 방법 (0) | 2022.09.07 |
---|---|
MySQL에서 정수 및 숫자 열을 PHP에서 정수 및 숫자로 반환하려면 어떻게 해야 합니까? (0) | 2022.09.07 |
태플을 목록으로 변환한 후 되돌리기 (0) | 2022.09.06 |
메서드 시그니처의 Java "패럴"? (0) | 2022.09.06 |
PHPUnit: 아사트Instance Of()가 작동하지 않습니다. (0) | 2022.09.06 |