我需要从地址列中提取日期值。我的地址栏值可能有街道号,房屋号,城市,州,国家,日等等
但我想只提取城市价值或州价值或国家价值。如果所有值都存储在一个地址列中,我该如何提取该特定内容。
我正在使用mysql数据库。我那列的结构是 -
列名 - 地址
列类型 - varchar(500)
Common Column value -
Street No-4 , House No-29 , Prabhat Nagar , Ludhiana , Punjab , India , wednessday , 25 may 2014
代码中有检查可用于检查所需的值是否为空。 Streeno,房屋号码,城市,国家,州都是必需的。如果任何必填字段为空,则不会在db中插入或更新列并将清空
日期格式代码也在代码中修复,每次都会采用这种格式
答案 0 :(得分:1)
你需要进行一些改进才能发挥作用。
因此,在地址栏中输入数据时,您需要维护一个结构每次插入数据时都会维护该结构,然后您可以通过下面的查询选择所需的结果 -
SELECT Mid(Title, Instr(Title, 'Day') + 4, Instr(Title, '|')- Instr(Title, ':')-1) As LastName FROM tblblog
数据库中的我的地址列值如下
Address
House No:29| Street No:4| Country:India| City:Ludhiana| Day:Thursday|
通过这种方式,您也可以搜索国家/地区,城市也适用于其他值。
说明:
Instr功能
它经常与其他字符串函数结合使用来操作字符串值。 Instr函数返回在另一个字符串中出现的字符串的位置。功能的格式如下:
Instr([start],stringToSearch,stringToFind)
start参数是可选的,它指定字符串中我们将开始搜索第二个字符串的位置。如果我们想从第一个字符串的第五个字符开始,那么我们将为start参数指定5。如果将其留空,则在第一个字符串的开头开始搜索。
中间功能
Mid(字符串,开始,长度)函数返回从指定位置开始并包含指定数量字符的字符串的一部分。
以下以dd / mm / yy格式从字符串列中提取月份值。提取的字符串从字符串中的第4个字符开始,以2个字符结束。
答案 1 :(得分:0)
确保城市名称以逗号(,)开头:
SELECT
LEFT(Address, CHARINDEX(',', Address)-1) as city,
SUBSTRING(Address, CHARINDEX(',', Address)+1,
LEN(Address) - CHARINDEX(' ', REVERSE(Address)) - CHARINDEX(',', Address)
) as state,
RIGHT(Address, CHARINDEX(' ', REVERSE(Address)) - 1) as zip
它将城市作为逗号的字符串的开头。
zip是字符串向后的结尾,直到找到第一个空格,因此19702或19702-1234的zip将起作用。
状态是逗号和字符串中最后一个空格之间的任何内容。
答案 2 :(得分:0)
我创造了这个。它会分离你的所有价值观。你忘了提及Area
,所以我也添加了它。
的 SQLFiddle Demo
强>
select
substring_index(substring_index(Address, ',', 1),',',-1) as street_no,
substring_index(substring_index(Address, ',', 2),',',-1) as house_no,
substring_index(substring_index(Address, ',', 3),',',-1) as area,
substring_index(substring_index(Address, ',', 4),',',-1) as city,
substring_index(substring_index(Address, ',', 5),',',-1) as state,
substring_index(substring_index(Address, ',', 6),',',-1) as country,
substring_index(substring_index(Address, ',', 7),',',-1) as day,
STR_TO_DATE(trim(substring_index(substring_index(Address, ',', 8),',',-1)),'%d %b %Y') as date1
from table1
输出
+-------------+-------------+---------------+----------+--------+---------+------------+-----------------------+
| street_no | house_no | area | city | state | country | day | date1 |
+-------------+-------------+---------------+----------+--------+---------+------------+-----------------------+
| Street No-4 | House No-29 | Prabhat Nagar | Ludhiana | Punjab | India | wednessday | May, 25 2014 00:00:00 |
+-------------+-------------+---------------+----------+--------+---------+------------+-----------------------+