sql中的Varchar到数字
我写了一个查询,其中我获取的金额是一个类似“50000”、“80000”的数字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
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应为十进制或货币数据类型。