mysql小问题 怎么将mysql数据库中一个表的一个字段中的指定格式文字select出来?比如字段中有一些文字,其中有email地址,想把所有的email地址都列出来,怎么办例如:这个字段内容是{dede:field name='writer'}[email protected]{/dede:field},单独取出[email protected]给个例子吧,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mysql> set @s='{dede:field name=\'writer\'}[email protected]{/dede:field}';Query OK, 0 rows affected (0.00 sec)mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@s, '{', 2), '}', -1);+-------------------------------------------------------+| SUBSTRING_INDEX(SUBSTRING_INDEX(@s, '{', 2), '}', -1) |+-------------------------------------------------------+| [email protected] |+-------------------------------------------------------+1 row in set (0.00 sec)mysql> 不是很理解,是不是匹配两个大括号里的?一个字段类似是这样:{dede:field name='keywords'}{/dede:field}{dede:field name='description'}{/dede:field}{dede:field name='title'}生生世世生生世世生{/dede:field}{dede:field name='writer'}[email protected]{/dede:field}{dede:field name='source'}{/dede:field}{dede:field name='pubdate'}{/dede:field}{dede:field name='body'}{/dede:field}{dede:field name='litpic'}{/dede:field}怎么把整张表的邮件地址都select出来呢? mysql> select * from t_yisu145;+-----------------------------------------------------------+| s |+-----------------------------------------------------------+| {dede:field name='keywords'}{/dede:field} || {dede:field name='description'}{/dede:field} || {dede:field name='title'}生生世世生生世世生{/dede:field} || {dede:field name='writer'}[email protected]{/dede:field} || {dede:field name='source'}{/dede:field} || {dede:field name='pubdate'}{/dede:field} || {dede:field name='body'}{/dede:field} || {dede:field name='litpic'}{/dede:field} |+-----------------------------------------------------------+8 rows in set (0.00 sec)mysql>mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(s,'{', 2),'}', -1) -> from t_yisu145 -> where s like '%@%';+----------------------------------------------------+| SUBSTRING_INDEX(SUBSTRING_INDEX(s,'{', 2),'}', -1) |+----------------------------------------------------+| [email protected] |+----------------------------------------------------+1 row in set (0.00 sec)mysql> SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( `result` , '{', 2 ) , '}', -1 ) FROM `dede_co_htmls` WHERE `result` LIKE '%@%'我这样写的,出来结果都是空的 (不要高估你的汉语表达能力或者我的汉语理解能力) 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 -- phpMyAdmin SQL Dump-- version 3.2.4-- http://www.phpmyadmin.net---- 主机: localhost-- 生成日期: 2010 年 08 月 31 日 09:51-- 服务器版本: 5.1.41-- PHP 版本: 5.3.1SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES gb2312 */;---- 数据库: `dedecmsv56gbk`---- ------------------------------------------------------------ 表的结构 `dede_co_htmls`--CREATE TABLE IF NOT EXISTS `dede_co_htmls` ( `aid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `nid` mediumint(8) unsigned NOT NULL DEFAULT '0', `typeid` smallint(5) unsigned NOT NULL DEFAULT '0', `title` varchar(60) NOT NULL DEFAULT '', `litpic` varchar(100) NOT NULL DEFAULT '', `url` varchar(100) NOT NULL DEFAULT '', `dtime` int(10) unsigned NOT NULL DEFAULT '0', `isdown` tinyint(1) unsigned NOT NULL DEFAULT '0', `isexport` tinyint(1) NOT NULL DEFAULT '0', `result` mediumtext, PRIMARY KEY (`aid`), KEY `nid` (`nid`), KEY `typeid` (`typeid`,`title`,`url`,`dtime`,`isdown`,`isexport`)) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=36038 ;---- 转存表中的数据 `dede_co_htmls`--INSERT INTO `dede_co_htmls` (`aid`, `nid`, `typeid`, `title`, `litpic`, `url`, `dtime`, `isdown`, `isexport`, `result`) VALUES(1730, 3, 0, '佛教翁经济哦健康的水平', '', 'http://www.skycn.com/soft/59394.html', 1283231400, 1, 0, '{dede:field name=''keywords''}{/dede:field}\r\n{dede:field name=''description''}{/dede:field}\r\n{dede:field name=''title''}佛教翁经济哦健康的水平{/dede:field}\r\n{dede:field name=''writer''}[email protected]{/dede:field}\r\n{dede:field name=''source''}{/dede:field}\r\n{dede:field name=''pubdate''}{/dede:field}\r\n{dede:field name=''body''}{/dede:field}\r\n{dede:field name=''litpic''}{/dede:field}\r\n');/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;导出一个结果是这样的,用SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( `result` , '{', 2 ) , '}', -1 ) FROM `dede_co_htmls` WHERE `result` LIKE '%@%'选择出来是空的, 建议在程序中使用正规式来取吧。在MYSQL中可以通过复杂的SQL语句或者存储函数来实现。但效率不如果直接在程序中实现。 用MySQL Workbench创建的数据库只会生成frm文件和ibd文件,怎么才能生成myd文件和myi文件? mysql 在存储过程中逐行读取表中的数据,对其操作的问题 mysql新建用户问题 求救高人!INSERT command denied to user 'mydb'@'192.1.169.2' 对数据库并发控制问题 请教插入后进行更新该条插入记录的触发器问题 求一个把表记录导入到文本文件,并且带‘|’分隔符。 请教问题 请问mysql的127和134号错误产生的原因? 如何从数据库查询出比较日期字段,取得离现在最近的日期?谢了 MYSQL是否够用 mysql表查询问题?
Query OK, 0 rows affected (0.00 sec)mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@s, '{', 2), '}', -1);
+-------------------------------------------------------+
| SUBSTRING_INDEX(SUBSTRING_INDEX(@s, '{', 2), '}', -1) |
+-------------------------------------------------------+
| [email protected] |
+-------------------------------------------------------+
1 row in set (0.00 sec)mysql>
{dede:field name='description'}{/dede:field}
{dede:field name='title'}生生世世生生世世生{/dede:field}
{dede:field name='writer'}[email protected]{/dede:field}
{dede:field name='source'}{/dede:field}
{dede:field name='pubdate'}{/dede:field}
{dede:field name='body'}{/dede:field}
{dede:field name='litpic'}{/dede:field}
怎么把整张表的邮件地址都select出来呢?
+-----------------------------------------------------------+
| s |
+-----------------------------------------------------------+
| {dede:field name='keywords'}{/dede:field} |
| {dede:field name='description'}{/dede:field} |
| {dede:field name='title'}生生世世生生世世生{/dede:field} |
| {dede:field name='writer'}[email protected]{/dede:field} |
| {dede:field name='source'}{/dede:field} |
| {dede:field name='pubdate'}{/dede:field} |
| {dede:field name='body'}{/dede:field} |
| {dede:field name='litpic'}{/dede:field} |
+-----------------------------------------------------------+
8 rows in set (0.00 sec)mysql>
mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(s,'{', 2),'}', -1)
-> from t_yisu145
-> where s like '%@%';
+----------------------------------------------------+
| SUBSTRING_INDEX(SUBSTRING_INDEX(s,'{', 2),'}', -1) |
+----------------------------------------------------+
| [email protected] |
+----------------------------------------------------+
1 row in set (0.00 sec)mysql>
FROM `dede_co_htmls`
WHERE `result` LIKE '%@%'我这样写的,出来结果都是空的
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2010 年 08 月 31 日 09:51
-- 服务器版本: 5.1.41
-- PHP 版本: 5.3.1SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES gb2312 */;--
-- 数据库: `dedecmsv56gbk`
---- ----------------------------------------------------------
-- 表的结构 `dede_co_htmls`
--CREATE TABLE IF NOT EXISTS `dede_co_htmls` (
`aid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`nid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`typeid` smallint(5) unsigned NOT NULL DEFAULT '0',
`title` varchar(60) NOT NULL DEFAULT '',
`litpic` varchar(100) NOT NULL DEFAULT '',
`url` varchar(100) NOT NULL DEFAULT '',
`dtime` int(10) unsigned NOT NULL DEFAULT '0',
`isdown` tinyint(1) unsigned NOT NULL DEFAULT '0',
`isexport` tinyint(1) NOT NULL DEFAULT '0',
`result` mediumtext,
PRIMARY KEY (`aid`),
KEY `nid` (`nid`),
KEY `typeid` (`typeid`,`title`,`url`,`dtime`,`isdown`,`isexport`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=36038 ;--
-- 转存表中的数据 `dede_co_htmls`
--INSERT INTO `dede_co_htmls` (`aid`, `nid`, `typeid`, `title`, `litpic`, `url`, `dtime`, `isdown`, `isexport`, `result`) VALUES
(1730, 3, 0, '佛教翁经济哦健康的水平', '', 'http://www.skycn.com/soft/59394.html', 1283231400, 1, 0, '{dede:field name=''keywords''}{/dede:field}\r\n{dede:field name=''description''}{/dede:field}\r\n{dede:field name=''title''}佛教翁经济哦健康的水平{/dede:field}\r\n{dede:field name=''writer''}[email protected]{/dede:field}\r\n{dede:field name=''source''}{/dede:field}\r\n{dede:field name=''pubdate''}{/dede:field}\r\n{dede:field name=''body''}{/dede:field}\r\n{dede:field name=''litpic''}{/dede:field}\r\n');/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;导出一个结果是这样的,用SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( `result` , '{', 2 ) , '}', -1 ) FROM `dede_co_htmls` WHERE `result` LIKE '%@%'选择出来是空的,