我在表external ref
transaction
的列
使用一行作为示例
ITS trans code: 1188716 ITS batch: 78606 15/16
我只对trans和批次ID感兴趣
我最初做过
SELECT
SUBSTRING(ts.ext_ref, 17, 7) AS transaction_id,
SUBSTRING(ts.ext_ref, 34, 7) batch_id
FROM transactions ts
它停止工作,因为1188716和78606都不是固定长度 我可以获得交易ID 123批次ID 456 或交易ID 12345566批号id 45678990
我想实现诸如此类的逻辑 削减第3和第4个空格之间的任何连续数字位数 和第6和第7个空格的相同逻辑
可以在SQL服务器中实现吗?
答案 0 :(得分:1)
这有点像黑客攻击,只有在您收到该格式的数据时才会有效
DECLARE @text VARCHAR(MAX) = 'ITS trans code: 1188716 ITS batch: 78606 15/16'
SELECT LEFT(LTRIM(RTRIM(REPLACE(@text, LEFT(@Text, CHARINDEX(':', @text)), ''))), CHARINDEX(' ',LTRIM(RTRIM(REPLACE(@text, LEFT(@text, CHARINDEX(':', @text)), ''))))) As TransNumber,
REVERSE(LEFT(REPLACE(REVERSE(@text), LEFT(REVERSE(@text), CHARINDEX(' ',REVERSE(@text))), ''),CHARINDEX(' ',REPLACE(REVERSE(@text), LEFT(REVERSE(@text), CHARINDEX(' ', REVERSE(@text))), '')))) AS BatchID
答案 1 :(得分:1)
我们遇到了同样的问题并使用主数据服务功能修复了它。我们确实需要在SqlServer上使用RegExp,最后得到一个像这样的函数:
<input id="Button1" onclick="showInfo()" type="button" value="Show Info." />
function showInfo()
{
if (document.getElementById("Terminats"))
{
}
else if (document.getElementById("HDTanel"))
{
}
}
点击此链接获取更多信息:https://dyball.wordpress.com/2011/11/01/sql-2008-r2-regular-expressions/