Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从任意表名中选择\项_Sql_Sql Server_Tsql_Select - Fatal编程技术网

Sql 从任意表名中选择\项

Sql 从任意表名中选择\项,sql,sql-server,tsql,select,Sql,Sql Server,Tsql,Select,我试着用SQL进行探索。突然看到下面的询问 SELECT \ FROM AnyTableName; --give you table name here 很好。 当我尝试进一步探索下面的查询时,它给出的值为0.00,数据类型为money IF OBJECT_ID('TEMPDB..#A') IS NOT NULL DROP TABLE #A; SELECT \ AS A INTO #A; SELECT A FROM #A; EXEC TEMPDB..SP_HELP '#A'; 在这种

我试着用SQL进行探索。突然看到下面的询问

SELECT \ FROM AnyTableName; --give you table name here
很好。 当我尝试进一步探索下面的查询时,它给出的值为0.00,数据类型为money

IF OBJECT_ID('TEMPDB..#A') IS NOT NULL
    DROP TABLE #A;
SELECT \ AS A INTO #A;
SELECT A FROM #A;
EXEC TEMPDB..SP_HELP '#A';
在这种情况下,SQL Server背后的逻辑是什么?

并没有真正得到明确的答案,但根据那里所做的研究,我认为这只是一种声明货币数据类型的快捷方式,就像在数字后添加句点是一种使用小数进行计算的快捷方式一样:

SELECT 1.    --returns 1.0 as a decimal number rather than an int
SELECT 1/2  --returns 0 because all operands are ints
SELECT 1/2. --returns 0.5; the addition of a decimal point makes the 2 a decimal instead - whole calc now done with decimals 
您不需要编写
.0
,只需一个句号就可以了,尽管编写
2.0
可能更清晰

将其视为其他常规货币符号:

SELECT $   --0 money
SELECT ¥1  --1 money
SELECT €.  --0 money
SELECT £.5 --0.5 money 

等等都被更改为money数据类型。为什么反斜杠是这样的?好吧,我们不能保证sql server开发团队的想法,但我建议有些人的键盘上没有这些符号,因此还提供了一个替代符号,如果sql server开发团队不知道所有的世界货币符号,则可以将其用于货币,或者,他们需要一种标准的方式来引用货币数据类型,而货币数据类型并不是一个因国家而异的货币符号

在Select$查询中,结果为0.00。我们可以说它已经选择了$0。与Select\query类似,结果为0.00。因此,您的意思是它具有SELECT\0.$是货币符号,所以对于这种类型的计算是可以接受的。是“\”货币符号,认为它像$?当然。在本例中,\是“类似于货币符号”,我的理论是sql server开发团队认为“除了支持所有这些已知的货币符号外,还应该有一个出现在许多键盘上的符号,并且可以以相同的方式使用,这样它就可以作为世界各地的货币快捷方式”,当然,无论如何,金钱并不是一种经常使用的数据类型,我认为-所以他们付出了很大的努力,我们也没有太多的使用:)是的,也许这就是原因。这是我们唯一正确的假设还是真实的?“\”reg(反斜杠)是否有microsoft文档?解析中不一致的一个示例:通常SQL Server将空格(
Char(32)
)和制表符(
Char(9)
)视为空白,例如
选择42作为答案可以使用空格或制表符的任意组合编写<代码>选择SQL_Variant_属性(42,'basetype')返回
int
。将第一个参数替换为
\42
\42
(为空),结果是
货币
。用一个选项卡将其更改为
\42
,您将在'42'附近发现
错误语法。
。(这与
select 30/3/5;
select 30/-3/5;
之间没有关系,后者是记录在案的行为。)