這是一種複雜的問題,請耐心等待。計算SQL列中分配給字符串標記的數值的總值
我已經得到了基本概念想通了,感謝THIS QUESTION
SELECT LENGTH(col) - LENGTH(REPLACE(col, 'Y', ''))
非常聰明的解決方案。
問題是,我試圖計算一個字符串標記的實例數量,然後將該計數器乘以一個代表該字符串數值的修飾符。哦,我有一個50-ish的代幣列表,每個代碼都有不同的值。
因此,採取字符串 「{5} {X} {白} {B/R} {2/U} {PG}」
仰望令牌的名單和他們的數值,我們可以得到這樣的:
{5} 5
{X} 0
{W} 1
{b/r} 1
{2/u} 2
{pg} 1
.... ....
因此,字符串的合計值以上5 + 0 + 1 + 1 + 2 + 1 = 10
現在,我真正需要的是一個辦法做一個Join併爲TokenValue表的每一列執行上述替換令牌獲取長度技巧。
這有道理嗎?
僞SQL例如:
SELECT StringColumn, TotalTokenValue
???
FROM TableWithString, TokenValueTable
或許,這將更好地工作,作爲一個自定義功能?
編輯
我想我大約一半有,但它是一種醜陋。
SELECT StringColumn, LEN(StringColumn) AS TotalLen, Token,
{ fn LENGTH(Token) } AS TokenLength, TokenValue,
{ fn REPLACE(StringColumn, Token, '') AS Replaced,
{ fn LENGTH(Replaced) } AS RepLen,
{ TotalLen - RepLen/TokenLength} AS TokenCount },
{ TokenCount * TokenValue} CalculatedTokenValue
FROM StringTable CROSS JOIN
TokenTable
然後我需要包裝,在某種分組依據,並得到SUM(CalculatedTokenValue) 我能想象在我的頭上,有麻煩的SQL工作。
哦,怎麼樣用值替換令牌,然後做某種類型的總和()函數?仍然停留在循環。在代碼中,我會做一些FOR循環,但仍然學習這個「盡一切努力在數據庫中」的趨勢。大聲笑。 –
什麼是數據庫?甲骨文?自定義函數將是數據庫特定的。 – AngelWarrior
無論使用.NET 2013打包。可能是SQL Server的變體。有一個FUNCTION文件夾,所以我假設我可以製作自定義文件夾。 :P –