我有一个填充了地址的表,其中一些地址在字符串中有一些连字符。
有些是:
“Wheelbarrow rd”
其他人可能
“Potato cir - 1到100”
在输出字符串之前,我希望能够在第一次出现“ - ”之后取出所有内容。
我不计划在任何地方使用带连字符的字符串 - 我应该操纵MySQL或PHP中的字符串。我想在PHP中做得更好但是在MySQL中做这件事的好处是每次输出时都不必操纵字符串。你们有什么建议?
(稍后我可能需要完整的字符串,所以我不一定要更改数据库中的记录)
干杯
答案 0 :(得分:2)
除非你想在数据库中永久存储字符串(地址组件?)的不同“格式”,否则我会在PHP中进行字符串更改,而不是在SQL查询中。
我假设字符串不是那么大,以至于在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, "-") );
}