列中的结果是:
14800:DATAB Unload
我试图获取所有数字:所以我只收到数字。
我应该在选择中完成这项工作?
答案 0 :(得分:1)
for mysql
SELECT LEFT(you_column,LOCATE(':',your_column) - 1) from your_table
for postgresql
SELECT substr(you_column , 1, position( ':' in your_column) - 1) from your_table
或
SELECT left(you_column , position( ':' in your_column) - 1) from your_table
答案 1 :(得分:0)
您可以使用正则表达式:
[DEPRECATION WARNING]: Using bare variables is deprecated. Update your playbooks so that the environment value uses the full
variable syntax ('{{groups["myhost"]}}').
This feature will be removed in a future release. Deprecation warnings can be disabled
by setting deprecation_warnings=False in ansible.cfg.
或使用select regexp_replace(the_column, '(^[0-9]+):.*', '\1')
from the_table;
功能:
left()
正则表达式对于不包含数字或select left(the_column, strpos(col, ':') - 1)
from the_table;
的字符串更加健壮。如果您确定每个值中都包含:
,那么第二个解决方案应该是首选,因为速度要快得多。
以下示例:
:
返回:
with data (col) as (
values ('14800:DATAB Unload'), ('Another Unload')
)
select regexp_replace(col, '(^[0-9]+):.*', '\1'),
left(col, strpos(col, ':') - 1)
from data;
第二个值将由正则表达式解决方案保持不变,但在使用regexp_replace | left
----------------+------------
14800 | 14800
Another Unload | Another Unloa
时将切断最后一个字符。