在列中的sql查询中查找并替换它为新值

时间:2013-08-13 08:57:03

标签: sql sql-server

我需要列出所有州。例如,我的状态表中的值是

01 - Tamilnadu
2 - Andhra
03 - MP
4 - Kerala

等。,,

我需要的是如果之前的数字是一位数,那么我必须用它追加零。例如,andhra只有一个数字,我需要它作为02 - Andhra在选择期间,否则返回值。这是我的尝试,它有很多语法错误。你能不能请任何人帮我完成我的询问。

select [state],case(len(SUBSTRING([state],1,CHARINDEX('-', [state]+'-')-1)))
when  1 then
state = append zero in the state
when 2
state = leave value as it is
End
 from states where [state] is not null order by id desc;

谢谢

6 个答案:

答案 0 :(得分:0)

select right('0'+state,2), statename
from states

答案 1 :(得分:0)

试试这个

Select Right('00'+cast(ColumnName As varchar),2)
from TableName

Select Right('00'+cast(state As varchar),2), StateName
from States where [state] is not null order by id desc;

答案 2 :(得分:0)

一种简单的方法是连接,然后右手拿大多数字符。

像这样:

SELECT RIGHT('00' + CONVERT(VARCHAR,[state]), 2) + ' - ' + Name
FROM states
WHERE [state] IS NOT NULL
ORDER BY id DESC;

如果由于某种原因,[state]列包含所有数据(例如'1 - Tamilnadu'),那么您需要将其修改为:

SELECT RIGHT('00' + [state], LEN([state]))
FROM states
WHERE [state] IS NOT NULL

虽然最好将id分开。

答案 3 :(得分:0)

Select replicate('0',2-len(stateId)) + cast(stateid as varchar) +'-' + state_name as  StateName

答案 4 :(得分:0)

如果您需要在执行SELECT

时修复数字,这是一种可行的解决方案
SELECT CASE WHEN state LIKE '[0-9] - %'
            THEN '0' + state
            ELSE state
       END state
  FROM states
 WHERE state IS NOT NULL
 ORDER BY Id DESC

示例输出:

state
--------------
01 - Tamilnadu
02 - Andhra
03 - MP
04 - Kerala

如果您需要更新此类值

UPDATE states
  SET state = '0' + state
 WHERE state LIKE '[0-9] - %'

答案 5 :(得分:0)

请看一下。

SELECT state, 
CASE LENGTH(SUBSTRING_INDEX(state, '-', 1)) 
WHEN 1 
THEN CONCAT('0', state) 
END AS changedstate
FROM  states 
WHERE state ID NOT NULL 
ORDER BY id desc;

谢谢