iT邦幫忙

0

請問SQL欄位取代語法

請問各位先進
小弟目前是新手SQL學習員工
目前遇到鼎X的WF的權限欄位
他是一個欄位用12個字串代表權限(權限全開這個欄位會是YYYYYYYYYYYY)
現在因為要修改權限
我不想動到他們原本的權限
只想取代第7跟第8的值
從原本的YY改成RR(YYYYYYRRYYYY)
如果大家都是一樣的權限,我查到可以用replace去修改
但是如果前提是我不能動到全部的人的目前權限的話
只想覆蓋掉第7跟第8的值變成RR的話,想請教SQL高手怎麼處理?Thanks

看更多先前的討論...收起先前的討論...
問問題要會問...做事不是這樣莽莽撞撞.SQL Command 也不是那樣簡單的.
你是要整個table 的每筆record 都更新這個欄位為新值嗎?
還是特定幾筆? 這要加上 where 來限制. 別一下就下了指令,沒有限制,到時候就把
全公司的權限都改了.
CalvinKuo iT邦大師 7 級 ‧ 2019-04-03 11:51:24 檢舉
MG006只修改成本與售價權限(第七與第八從Y改成R,一般改為唯讀)....
一般用ADMI05可以輕易修改,但會留下紀錄(ADMMG的管理欄位),直接進資料庫改有啥特殊需求嗎?
aaronlin iT邦新手 3 級 ‧ 2019-04-03 12:07:43 檢舉
TO 一級屠豬士
我知道我不太會問~不好意思~
我的確是要把全公司的MG006改成R~且我會下Where~感謝提醒~我提問裡面沒有寫清楚~Sorry
TO CalvinKuo
因為要不讓使用者有修改單價權限
因為Where條件我會下~只是取代中間值的欄位不太熟~
我也知道不會留下紀錄
因為人數太多~且ADMI05的修改不太人性化(點選使用者之後~~要先點選修改(先下拉在點選修改她會自己再跑回最上層)再下拉到COPI06~
然後針對成本跟售價的欄位按下唯獨(修改一個人差不多就要10秒~15秒左右)
然後我有三家公司別~~使用者有權限的有上百人~~所以我才會想從SQL底下做~
CalvinKuo iT邦大師 7 級 ‧ 2019-04-03 12:49:21 檢舉
一般來說會用群組權限來規範...
當然也可以用ADMB02....
aaronlin iT邦新手 3 級 ‧ 2019-04-03 13:24:49 檢舉
群組權限是OK的~不過小弟來接手的時候就是整個亂七八糟的狀況~~哈哈哈~~還在熟悉中~~從硬體轉兼ERP~~需要花很多時間自學啊Orz

2 個回答

1
純真的人
iT邦高手 1 級 ‧ 2019-04-03 10:46:51
最佳解答

這樣可嗎@@?

select stuff('YYYYYYYYYYYY',7,2,'RR')

https://ithelp.ithome.com.tw/upload/images/20190403/20061369Ix6e9lF0qe.png

看更多先前的回應...收起先前的回應...

還是mssql的函數比較好用。mysql就沒有這樣的函數能用。
只能自已組合。

浩瀚星空

MySQL也有呀@@..

SELECT INSERT('YYYYYYYYYYYY', 7, 2, 'RR');

http://sqlfiddle.com/#!9/9eecb/84680

aaronlin iT邦新手 3 級 ‧ 2019-04-03 12:02:03 檢舉

感謝您,這語法OK~我剛剛研究了一下
因為我要取代7跟8值~前面跟後面的值因為會不固定
所以我改成
UpData XX
Set =STUFF(MG006,7,2,'RR')
感恩~

CalvinKuo iT邦大師 7 級 ‧ 2019-04-03 12:53:21 檢舉

抱歉,借位置貼圖 (ADMB02)
ADMB02詳細使用方法,看說明檔與問客服
不管你用SQL還是ADMB02,請先在測試區做過沒問題再說。
https://ithelp.ithome.com.tw/upload/images/20190403/20046740PIVE90Adww.jpg

aaronlin iT邦新手 3 級 ‧ 2019-04-03 13:19:33 檢舉

To CalvinKuo
這隻我知道喔~可是這是針對某些人的固定權限去賦與
因為我現行可能有1主管權限,有些有確認卻沒取消確認權限~有些有修改權限有些只有查詢權限所以這支其實也不太好用.....感謝您的提供~
PS你的版本比我新~~我司的是3.1.X版本@_@

CalvinKuo iT邦大師 7 級 ‧ 2019-04-03 14:37:04 檢舉

我司使用GP 4.1,這個版本可以單一公司資料庫多帳本(敝司沒用)
另外SQL SSMS版本夠新可用編輯,修改SQL,去看看你改的對不對或直接修改 (敝司COPI06有客製)
https://ithelp.ithome.com.tw/upload/images/20190403/20046740En2iljfJvT.jpg

aaronlin iT邦新手 3 級 ‧ 2019-04-03 17:56:20 檢舉

好的喔~感謝您~不過我都直接用指令查~~XD
我也想升級,3.X的Bug還滿多的Orz....但是客製要一起變更費用產生老闆就不太想動了@_@

0
浩瀚星空
iT邦超人 1 級 ‧ 2019-04-03 10:37:15

比較簡單的方式是。你可以用

SET wf = CONCAT(left(wf,6),'RR',right(wf,4))

不過這得要確定長度是一樣的才行就是了。

比較安全點是最好能算出長度。再將後面的right換掉。但如果長度一樣。上面的方式就夠用了。

另外一種方式就是用正則來做更新了。
我這是mysql的語法。mssql的我就不知道有無這樣的函數給你用了。

aaronlin iT邦新手 3 級 ‧ 2019-04-03 13:25:29 檢舉

也謝謝您的MySQL語法~之後我有用到的話也可以學起來~~感謝^^

我要發表回答

立即登入回答