varchar中的数字为sql

时间:2014-03-03 18:28:22

标签: sql sql-server oracle

我写了一个查询,其中我提取的金额是'50,000','80,000'。

select Price_amount
from per_prices

由于这些值包含',',因此这些值被视为varchar。要求是将这些值打印为带有','的数字'

这是怎么可以'50,000'被视为数字而不是varchar

2 个答案:

答案 0 :(得分:1)

如果某个值中包含除数字以外的任何值,则它不是整数,而是包含字符的字符串。在您的情况下,您有一个包含字符50,的字符串。

如果这是您的数据库中存储的内容,这是您想要显示的内容,那么请继续将其更改为Integer或其他任何内容。但是如果您在显示这些值之前对这些值进行一些计算,那么您需要将它们更改为整数值。做计算。将它们更改回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

SQL Fiddle

答案 1 :(得分:0)

您可以合并Replacecast功能

SELECT CAST(REPLACE(Price_amount, ',', '') AS int) AS Price_Number FROM per_prices

有关详细信息,请访问'replace''cast'

SQLFiddle