我需要列出所有州。例如,我的状态表中的值是
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;
谢谢
答案 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;
谢谢