sql-server - SQL Server 检查表达式的结果数据类型

标签 sql-server tsql types

通常我会将数据类型放入临时表中并检查表列类型,例如

select 1.0 N into tbl

sp_help tbl

N 列显示表达式 1.0 的数据类型。 (这只是一个简单的例子)

有一个 SQL 函数可以直接检查表达式的数据类型,但我现在想不起这个名字了。

这个函数的名称是什么?

最佳答案

SQL_VARIANT_PROPERTY很接近

DECLARE @what sql_variant;
DECLARE @foo decimal(19,3) = 1, @bar decimal(11,7) = 2;

SELECT @what = @foo / @bar;
SELECT
    SQL_VARIANT_PROPERTY(@what, 'BaseType'),
    SQL_VARIANT_PROPERTY(@what, 'Precision'),
    SQL_VARIANT_PROPERTY(@what, 'Scale'),
    SQL_VARIANT_PROPERTY(@what, 'MaxLength');

SELECT @what = @foo + @bar;
SELECT
    SQL_VARIANT_PROPERTY(@what, 'BaseType'),
    SQL_VARIANT_PROPERTY(@what, 'Precision'),
    SQL_VARIANT_PROPERTY(@what, 'Scale'),
    SQL_VARIANT_PROPERTY(@what, 'MaxLength');


SELECT @what = @foo * @bar;
SELECT
    SQL_VARIANT_PROPERTY(@what, 'BaseType'),
    SQL_VARIANT_PROPERTY(@what, 'Precision'),
    SQL_VARIANT_PROPERTY(@what, 'Scale'),
    SQL_VARIANT_PROPERTY(@what, 'MaxLength');

或者临时表/SELECT..INTO..作为您已经完成的操作的扩展

编辑:Remus' answer?

关于sql-server - SQL Server 检查表达式的结果数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008217/

相关文章:

mysql - 更新存储过程中的不同列

SQL (Microsoft) - 同时进行 2 个更新

SQL 递归 CTE 'where-used'/BOM 爆炸第 2 部分

sql - 为什么关系在 SQL 实现中很重要?

sql-server - 从 SQL Server 查询 "Microsoft.ACE.OLEDB.12.0"提供程序时出错

scala - 在没有隐式证据对象的情况下直接使用 Scala 类型类

C# : Type. GetType 在动态加载程序集的类上为 null

sql-server - 在 SQL Server 中使用索引

sql-server - 如何使用带有多个子节点的sql将表数据转换为xml格式

java - 来自 Java 代码的 Jing RelaxNG validator 和自定义数据类型库