【问题标题】:Adding characters in values in an existing column在现有列的值中添加字符
【发布时间】:2013-02-24 09:48:10
【问题描述】:

我需要向列中的值添加字符。例如:

Price column
22.99
12.95
10.35

对于我的查询输出,我需要此列显示为

Price column
Price is 22.99
Price is 12.95
Price is 10.35

我已经使用它来将这些值转换为 char,因为我认为我必须这样做才能在此列中插入字符...

CONVERT (char(12), price) AS price

我只是不知道如何编写命令以在每一行中添加“价格为”:(

请帮忙,谢谢!

【问题讨论】:

  • 为什么要这样做?而是在您的应用程序中添加此逻辑。否则,您将在列中存储两倍以上的符号(如果您有很多行,这不是一个好主意)。更重要的是,现在您无法使用 SUM/AVG 等聚合函数,也无法执行“SELECT COUNT(*) WHERE Price
  • 我认为您不应该在数据库中而是在代码中添加“价格是”,以说明为什么在返回的每个数据行中传输相同的文本。在你的代码中处理它。

标签: mysql sql sql-server tsql


【解决方案1】:

如果列的数据类型是INT数字,则不能永久执行此操作,但您可以在SELECT 语句中执行此操作,

MySQL:

SELECT  CONCAT('Price is ', priceColumn) Price_Column
FROM    tableName

TSQL

SELECT  'Price is ' + CAST(priceColumn AS VARCHAR(15)) Price_Column
FROM    tableName

但是如果你将该列的数据类型更改为字符串(VARCHAR()),那么你可以简单地执行UPDATE 命令

MySQL

UPDATE  tableName
SET     priceColumn = CONCAT('Price is ', priceColumn)

TSQL

UPDATE  tableName
SET     priceColumn = 'Price is ' + CAST(priceColumn AS VARCHAR(15))

【讨论】:

  • 这是我当前的 SQL 语句:SELECT title_id, LEFT(title, 30) AS title, CONVERT (char(12), price) AS price, advance, pubdate, CONVERT( char(12), pubdate ,106) AS PUBDATE FROM TITLES WHERE ADVANCE >= '5000' AND PUBDATE in ('06/12/1991' , '06/30/1991') ORDER BY TITLE 我在哪里插入这个语句:SELECT 'Price is ' + CAST(priceColumn AS VARCHAR(15)) Price_Column
  • 您使用的是什么关系型数据库? MySQL 还是 SQLServer?它们是两个不同的东西。
  • CONCAT('Price is ', priceColumn) Price_Column 这一个实际上没有将数据类型转换为varchar。该列最初将钱作为数据类型,我必须将其转换为 char CONVERT (char(12), price) AS price 认为我必须这样做才能在列中插入任何文本。但是,仅使用它就可以了! :) CONCAT('Price is ', price) price 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 2015-10-26
  • 2017-05-16
相关资源
最近更新 更多