操纵字符串 - PHP或MySQL

时间:2011-05-31 23:53:10

标签: php mysql string

我有一个填充了地址的表,其中一些地址在字符串中有一些连字符。

有些是:

“Wheelbarrow rd”

其他人可能

“Potato cir - 1到100”

在输出字符串之前,我希望能够在第一次出现“ - ”之后取出所有内容。

我不计划在任何地方使用带连字符的字符串 - 我应该操纵MySQL或PHP中的字符串。我想在PHP中做得更好但是在MySQL中做这件事的好处是每次输出时都不必操纵字符串。你们有什么建议?

(稍后我可能需要完整的字符串,所以我不一定要更改数据库中的记录)

干杯

3 个答案:

答案 0 :(得分:2)

除非你想在数据库中永久存储字符串(地址组件?)的不同“格式”,否则我会在PHP中进行字符串更改,而不是在SQL查询中。

  1. 听起来问题实际上是关于MVC分离的“视图”部分,而不是与数据模型,存储,链接等有关的事情。
  2. 扩展PHP通常比扩展数据库更容易。
  3. 我假设字符串不是那么大,以至于在SQL-> PHP之间发送更少的数据是一个问题。

    编辑: RRStoyanov's solution是相反的一面,你让数据库服务器进行字符串操作。

答案 1 :(得分:2)

我玩了一下,我有这个给你。

SELECT
DataColumn, 
SUBSTRING_INDEX(DataColumn, '-', -1) AS Substringed
FROM YourTable

现在你有原始列和子列。

以下是示例输出

DataColumn|Substringed
Quantity for pricing 1|Quantity for pricing 1
Quantity for pricing 2|Quantity for pricing 2
Quantity for pricing 3|Quantity for pricing 3
Wheelbarrow rd|Wheelbarrow rd
Potato cir - 1 through 100| 1 through 100

如果DataColumn中有多个短划线,则可能会出现此问题。你得到了这个想法,可以用它来进行更精细的调整。

您可能也想看这里=> MySQL String Functions

答案 2 :(得分:1)

我同意Darien的观点。除非这对于查询或视图模型以某种方式相关,否则您应该操纵PHP层中的字符串。看看这个功能是否适合你的需要。

function handleAddress($address) {
    return  (!strpos($address, "-")) ? $address : substr($address, 0 ,strpos($address, "-") );
  }