Lor*_*nzo 2 sql sql-server sql-server-2008
我有一张像这样的桌子
CREATE TABLE MyTable (
[MyTableID] [int] NOT NULL,
[Description] [varchar](50) NOT NULL,
CONSTRAINT [PK_AddressType] PRIMARY KEY CLUSTERED (
[MyTableID] ASC
)
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么即使我在单引号中包含字段值,以下查询仍然有效吗?
SELECT *
FROM MyTable
WHERE MyTableID = '1'
Run Code Online (Sandbox Code Playgroud)
这是SQL Server特有的功能吗?它是ANSI/SQL?
您演示的内容通常称为隐式数据转换 - 数据会自动转换为要比较的列的数据类型.因为值为"1"的字符串可以转换为值为1的数值数据类型,所以工作正常.隐式数据类型转换可以根据此处的优先级列表进行.
显式数据转换是指使用CAST或CONVERT等函数时.
我知道的所有数据库都支持字符串到数字(反之亦然) - SQL Server,Oracle,MySQL,PostgreSQL ...... CAST函数是ANSI,IIRC.其他数据类型不灵活 - 例如日期和日期.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |