Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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中的Varchar到数字_Sql_Sql Server_Oracle - Fatal编程技术网

sql中的Varchar到数字

sql中的Varchar到数字,sql,sql-server,oracle,Sql,Sql Server,Oracle,我写了一个查询,其中我获取的金额是一个类似“50000”、“80000”的数字 select Price_amount from per_prices 由于这些值包含“,”,因此被视为varchar。要求将这些值打印为带“,”的“数字” 这就是如何将“50000”视为数字而不是varchar您可以将Replace和cast功能组合起来 SELECT CAST(REPLACE(Price_amount, ',', '') AS int) AS Price_Number FROM per_pric

我写了一个查询,其中我获取的金额是一个类似“50000”、“80000”的数字

select Price_amount
from per_prices
由于这些值包含“,”,因此被视为
varchar
。要求将这些值打印为带“,”的“数字”


这就是如何将“50000”视为数字而不是
varchar

您可以将
Replace
cast
功能组合起来

SELECT CAST(REPLACE(Price_amount, ',', '') AS int) AS Price_Number FROM per_prices
欲了解更多信息,请访问


如果值中除了数字之外还有其他内容,则它不是整数,而是包含字符的字符串。在本例中,您有一个包含字符
5
0
的字符串

如果这是存储在数据库中的内容,并且这是您希望显示的内容,那么继续,您不需要将其更改为整数或其他任何内容。但是,如果在显示这些值之前对它们进行一些计算,则需要将它们更改为整数值。计算一下。将它们更改回varchar数据类型以显示
介于数千和十万之间,并显示/选择它们

示例

DECLARE @TABLE TABLE (ID INT, VALUE VARCHAR(100))
INSERT INTO @TABLE VALUES
(1, '100,000'),(2, '200,000'),(3, '300,000'),(4, '400,000'),
(1, '100,000'),(2, '200,000'),(3, '300,000'),(4, '400,000')

SELECT ID, SUM(
               CAST(
                    REPLACE(VALUE, ',','')  --<-- Replace , with empty string
                    AS INT)                 --<-- Cast as INT
             )   AS Total                  --<-- Now SUM up Integer values
FROM @TABLE 
GROUP BY ID
DECLARE@TABLE表(ID INT,VALUE VARCHAR(100))
插入到@TABLE值中
(1, '100,000'),(2, '200,000'),(3, '300,000'),(4, '400,000'),
(1, '100,000'),(2, '200,000'),(3, '300,000'),(4, '400,000')
选择ID,SUM(
铸造(

替换(值“,”和“-”-这是SQL Server还是Oracle?定义“Concidered”?如果你正在打印它们-有什么区别?你在任何计算中都使用它们吗?它们不被视为varchar,它们是varchar值。如果它是一个整数值,除了数字之外就没有其他内容了。你在任何计算中都使用它们吗?这些值是作为数字数据类型还是作为文本数据类型存储的?也许我们应该建议如果所有的数据类型都是Int或Money,那么他应该相应地反映他的数据库。想法?@MarkLaREZZA你不能再正确了。你将要进行计算的任何数据都必须是Int/numeric/decimal/Money数据类型。因为这是一个价格列,所以它需要st应为十进制或货币数据类型。