Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

1 có luôn luôn bằng '1' trong SQL không?

SELECT 1='1' đưa ra TRUE kể từ '1' là một hàm tạo chính xác cho INT trong tất cả các triển khai mà tôi biết.

Nhưng SQL sử dụng kiểu gõ nghiêm ngặt, hãy xem điều đó:

# SELECT 1=CAST('1' AS TEXT);
ERROR:  operator does not exist: integer = text
LINE 1: SELECT 1=CAST('1' AS TEXT);
                ^
HINT:  No operator matches the given name and argument type(s). You might need to add  explicit type casts.

Về tiêu chuẩn (SQL 92, 99 &2003) có vẻ như không đúng:

     <literal> ::=
            <signed numeric literal>
          | <general literal>

     <general literal> ::=
            <character string literal>
          | <national character string literal>
          | <bit string literal>
          | <hex string literal>
          | <datetime literal>
          | <interval literal>

     <signed numeric literal> ::=
          [ <sign> ] <unsigned numeric literal>

     <unsigned numeric literal> ::=
            <exact numeric literal>
          | <approximate numeric literal>

     <exact numeric literal> ::=
            <unsigned integer> [ <period> [ <unsigned integer> ] ]
          | <period> <unsigned integer>

     <unsigned integer> ::= <digit>...

     <character string literal> ::=
          [ <introducer><character set specification> ]
          <quote> [ <character representation>... ] <quote>
            [ { <separator>... <quote> [ <character representation>... ] <quote> }... ]

bởi vì <quote> chỉ được chứa trong <bit string literal> , <hex string literal> , ... nhưng không phải ở dạng số ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Luồng khí 1.10.0 qua Ansible

  2. Sử dụng LIMIT trong GROUP BY để nhận N kết quả cho mỗi nhóm?

  3. MySQL trung bình cứ 4 hàng

  4. Không thể tạo bảng trong mysql -Error 1064

  5. Còn lại tham gia với điều kiện