如何拆分数字查询结果?

时间:2013-03-25 16:50:01

标签: php mysql

我从一个数据库中提取一个ID号,并将其存储为12345

当我在我的页面(php)上显示它时,我希望它显示为1-2345

我可以在不使用Javascript的情况下执行此操作吗?如果是这样,怎么样?

谢谢!

ETA:它是动态提取的数据循环的一部分,因此数字总是不同的。我需要能够告诉它在第一个数字之后加上破折号。它不一定是1-2345;它是X-XXXX(其中X是随机数)。

6 个答案:

答案 0 :(得分:12)

您应该能够在MySQL中使用以下内容:

select
  concat(left(yourCol, 1), 
         '-', 
         right(yourcol, length(yourCol)-1)) YourValue
from yourtable

请参阅SQL Fiddle with Demo

这实现了以下MySQL函数:

或者您可以使用SUBSTR代替RIGHTLENGTH

select
  concat(left(yourCol, 1), 
         '-', 
         substr(yourcol, 2)) YourValue
from yourtable;

请参阅SQL Fiddle with Demo

答案 1 :(得分:4)

在PHP中

$id = (str)$dbVal;
$str = $id[0]."-".substr($id, 1, strlen($id) - 1);
echo $str;

答案 2 :(得分:3)

其他答案没有解决 来放置代码,以及原因。在第一个数字后插入破折号是与显示相关的逻辑,并且与显示相关的逻辑属于模板。它当然不属于数据库层。您可以将实际代码放在HTML旁边,但这可能是a)可能不是非常有意图揭示而且b)不是非常可重复使用。

为了最好地分离问题,我首先会定义一个"帮助"像这样的函数,在它自己的文件中:

function insert_dash_after_first_number($value)
{
  return str_replace($value[0], $value[0].'-', $value);
}

然后,在您的模板中,您可以执行此操作(授予您包含帮助文件):

<?php echo insert_dash_after_first_number('12345'); ?>

希望您能够看到以这种方式分离事物会让其他人以及您未来的自我变得非常清楚。您可以查看函数名称并查看&#34;哦,这会在第一个数字后面插入一个短划线&#34;。您不必查看任何代码并考虑它可能会做什么。

答案 3 :(得分:3)

$var = "12345";
echo $var[0] . "-" . substr($var,1);

这适用于任何长度的值。

答案 4 :(得分:3)

首先,使用您的SELECT MySQL命令查找您的ID号。 假设$string实际上是ID的“字符串化”版本。

$string = "12345"; 
$string = str_replace($string[0], $string[0] . "-", $string); 
echo $string; 

答案 5 :(得分:2)

 $string1 = substr($id, 0,1);
 $string2 = substr($id, 1, strlen($id));