我將表格中的週末保存爲0,6(星期日,星期六)和星期一(如星期一,星期四,星期六)的星期六和星期六。選擇時,我需要用合適的工作日替換數字。例如,用SQL中的工作日替換逗號分隔的數字
SELECT WEEKEND_DAYS FROM TABLE_1
返回
WEEKEND_DAYS
1,4,6
但我需要的O/P爲
WEEKEND_DAYS
Monday,Thursday,Saturday
如何實現這一目標?在此先感謝...
我將表格中的週末保存爲0,6(星期日,星期六)和星期一(如星期一,星期四,星期六)的星期六和星期六。選擇時,我需要用合適的工作日替換數字。例如,用SQL中的工作日替換逗號分隔的數字
SELECT WEEKEND_DAYS FROM TABLE_1
返回
WEEKEND_DAYS
1,4,6
但我需要的O/P爲
WEEKEND_DAYS
Monday,Thursday,Saturday
如何實現這一目標?在此先感謝...
使用醜陋REPLACE()
可以做的工作
SELECT
WEEKEND_DAYS,
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(WEEKEND_DAYS
, 1, 'Monday')
, 2, 'Tuesday')
, 3, 'Wensday')
, 4, 'Thursday')
, 5, 'Friday')
, 6, 'Saturday')
, 0, 'Sunday') AS WEEKEND_DAYS_NAME
FROM (VALUES('1,4,6')) TABLE_1(WEEKEND_DAYS)
它的工作......謝謝 –
你應該試試以下,
它將給你 6 =週日 0 =週一
DECLARE @daynum VARCHAR(256)
SET @daynum = '1,5,3,2'
IF @daynum = '' RETURN
DECLARE @XML xml
SET @XML = '<root><csv>'+replace(@daynum,',','</csv><csv>')+
'</csv></root>'
Select STUFF(( SELECT ',' + dayname
FROM
(
Select DATENAME(DW,CAST(ListMember AS INT)) as dayname from
(
SELECT rtrim(ltrim(replace(Word.value('.','nvarchar(max)'),char(10),'')))
AS ListMember
FROM @XML.nodes('/root/csv') AS WordList(Word)
)T
) T2
ORDER BY dayname
FOR XML PATH('')
), 1, 1, '')
您也可以創建拆分功能,然後根據需要調用它。
CREATE FUNCTION dbo.fnParseStringXML (
@StringList NVARCHAR(MAX),
@Delimiter CHAR(1))
RETURNS @TableList TABLE(ID int identity(1,1) PRIMARY KEY,
[Substring] NVARCHAR(max))
BEGIN
IF @StringList = '' RETURN
DECLARE @XML xml
SET @XML = '<root><csv>'+replace(@StringList,@Delimiter,'</csv><csv>')+
'</csv></root>'
INSERT @TableList
SELECT rtrim(ltrim(replace(Word.value('.','nvarchar(max)'),char(10),'')))
AS ListMember
FROM @XML.nodes('/root/csv') AS WordList(Word)
RETURN
END -- FUNCTION
GO
你應該把它以這種方式。
Select DATENAME(DW,CAST(Substring AS INT)) from
(
SELECT Substring FROM dbo.fnParseStringXML (@ProductCode, ',')
)T
感謝您的回答,您的第一組代碼給個別行的日子,我需要它在逗號分隔。而返回@Tablelist的函數傳遞兩列只有數字,而不是平日,在分開的行,我需要它在逗號分隔。 –
@Eric爲此提供了一個簡單的解決方案,我的目標是給你另一種選擇,告訴你如何處理這類數據。 :) –
順便看看更新的答案(第一個查詢),它會給你輸出你想要的。 –
它爲我工作。 希望它有幫助。 使用1-7天索引
<?php
$result="";
// include("database.php");
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("db_name") or die(mysql_error());
$query= mysql_fetch_row(mysql_query("SELECT weekend_days from weekend where weekend_days= '1,4,6'"));
if (!$query) {
echo "No weekend";
}
else {
$new= explode(",", $query[0]);
for ($i=0; $i < sizeof($new) ; $i++) {
if($new[$i]==1){
$result.= " Sunday";
}
elseif($new[$i]==2) {
$result.=", Monday";
}
elseif($new[$i]==3){
$result.= ", Tuesday";
}
elseif($new[$i]==4){
$result.= ", Wednesday";
}
elseif($new[$i]==5){
$result.=", Thursday";
}
elseif($new[$i]==6){
$result.= ", Friday";
}
elseif($new[$i]==7){
$result.= ", Saturday";
}
}
echo "WEEKEND_DAYS " . $result;
}
?>
試試這一個。
SELECT
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(WEEKEND_DAYS
, 1, 'Monday')
, 2, 'Tuesday')
, 3, 'Wednesday')
, 4, 'Thursday')
, 5, 'Friday')
, 6, 'Saturday')
, 0, 'Sunday') AS WEEKEND_DAYS_NAME
FROM TABLE_1
警告:您很可能有數據建模問題。如果您正在構建新系統,請考慮對正常化的數據庫進行一些研究。如果這是一個「成熟」的系統,你不能改變你的運氣。 –