如何将52:34字符串值转换为bigint

时间:2018-02-05 06:35:14

标签: string postgresql casting bigint

如何转换在数据库中存储为字符串的值52:35,并且我希望PostgreSQL DB中的BigInt值中只有52作为查询。

我尝试了以下查询

select cast(substr(a,1,strpos(a,':')-1) AS bigint) as value from abc

它返回了一个错误“不允许负子字符串长度”

2 个答案:

答案 0 :(得分:1)

当遇到不包含冒号const page1 = await browser.newPage(); await page1.goto('https://www.google.com'); const page2 = await browser.newPage(); await page2.goto('https://www.bing.com'); const pageList = await browser.pages(); console.log("NUMBER TABS:", pageList.length); //switch tabs here await page1.bringToFront(); //Do something... save as pdf await page2.bringToFront(); //Do something... save as pdf 的值时,该查询将失败。仅当值包含冒号时,才使用$(document).ready(function () { setInterval(function () { $('#RoomBlock').children('div').each(function () { ShowRoom($(this).attr('id')); }); }, 10000); function ShowRoom(id) { /* Add some loader here (bar or image)*/ var loaderHtml = "<div id='loader_'+id>_____Add your loader code here_____</div>"; $('#' + id).append(loaderHtml); $.ajax({ type: "POST", async: false, url: "/localhost/GetData/" + id success: function (response) { if (response != null) { $('#' + id).empty(); $('#loader_'+ id).remove(); $('#' + id).append(response); } else { alert("null"); $('#loader_'+ id).remove(); } }, error: function (response) { alert("error!"); } }); }) 构造尝试提取。像(未经测试的)

之类的东西
:

对于case...when...else...end案例,请替换您需要的任何内容。可能还有一种方法可以使用CASE WHEN strpos(a,':') > 0 THEN cast(substr(a,1,strpos(a,':')-1) AS bigint else null END 而不是上述方法,但是我无法找到文档说明如果分隔符不存在会发生什么。

答案 1 :(得分:1)

您可以使用split_part(string text, delimiter text, field int)

postgres=# select split_part('52:35', ':', 1)::bigint;
 split_part
------------
         52

postgres=# select split_part('52', ':', 1)::bigint;
 split_part
------------
         52