如何在mysql中使用select查询时将数字转换为字符
我正在尝试将数字转换为字符表示 我有一个名为salary的列,它存储一个值,例如,员工1的值为400。我想用select查询显示员工1的工资。但是,如果薪资为200,则将薪资显示为如何在mysql中使用select查询时将数字转换为字符,mysql,sql,sql-server,Mysql,Sql,Sql Server,我正在尝试将数字转换为字符表示 我有一个名为salary的列,它存储一个值,例如,员工1的值为400。我想用select查询显示员工1的工资。但是,如果薪资为200,则将薪资显示为*,如果薪资为400,则显示***,如果薪资为600,则显示*** 所以每个*=200 有人能告诉我怎么做吗?如果选项数量有限(可能少于10个),您需要案例陈述- 如果你想要很多星号,如果某人的薪水是10000,你可以使用rpad-。这是一个非常小的问题 您已经用mysql和sql server对其进行了标记;这些是具
*
,如果薪资为400,则显示***
,如果薪资为600,则显示***
所以每个*
=200
有人能告诉我怎么做吗?如果选项数量有限(可能少于10个),您需要案例陈述-
如果你想要很多星号,如果某人的薪水是10000,你可以使用rpad-。这是一个非常小的问题 您已经用mysql和sql server对其进行了标记;这些是具有不同语言变体的不同工具。下面的答案适用于mysql,但可能需要对sql server进行一些重构
Select name
, concat(salary,rpad('',floor(salary/200),'*'))
From your table
...
在MySQL中,您可以使用
在SQL Server中,您可以使用
输出
stars salary
* 1
** 2
*** 3
* 1
* 1
SQL Server:
create table #tab (
name nvarchar(100),
salary int
)
insert #tab values ('Mrs. Garrett', 100), ('Mr. Drummond', 200),
('Kimberly', 300), ('Willis', 400),
('Arnold', 500), ('Tooty', 600),
('Natalie', 700)
select name,
salary,
replicate('*', floor(salary/200))
from #tab
drop table #tab
产生:
name salary (No column name)
Mrs. Garrett 100
Mr. Drummond 200 *
Kimberly 300 *
Willis 400 **
Arnold 500 **
Tooty 600 ***
Natalie 700 ***
或者,您可以用以下内容替换replicate()
:
case
when salary >= 600 then '***'
when salary >= 400 then '**'
when salary >= 200 then '*'
else ''
end
请删除sql server标记-sql server与mysql不同。如果
250
,该怎么办?对于250,只需显示两个星号即可。您的答案几乎接近我的问题,我只想再做一件事,我想展示的是star*而不是intgers意味着薪水为100的show***而不是展示100***如何在mysql中实现这一点,我想制作*200而不是200*比如****800而不是800****这就做到了。。。我也在选择薪水,这样你就可以看到了。我的结果中有三列。如果您不想收回select语句中的“salary”行,请将其删除。
name salary (No column name)
Mrs. Garrett 100
Mr. Drummond 200 *
Kimberly 300 *
Willis 400 **
Arnold 500 **
Tooty 600 ***
Natalie 700 ***
case
when salary >= 600 then '***'
when salary >= 400 then '**'
when salary >= 200 then '*'
else ''
end