Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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
如何在mysql中使用select查询时将数字转换为字符_Mysql_Sql_Sql Server - Fatal编程技术网

如何在mysql中使用select查询时将数字转换为字符

如何在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对其进行了标记;这些是具

我正在尝试将数字转换为字符表示

我有一个名为salary的列,它存储一个值,例如,员工1的值为400。我想用select查询显示员工1的工资。但是,如果薪资为200,则将薪资显示为
*
,如果薪资为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