Mysql Like 问题

banxitan 2010-12-15 02:35:57
有如下的表结构 及数据

-- ----------------------------
-- Table structure for e_role
-- ----------------------------
CREATE TABLE `e_role` (

`uri` varchar(80) collate utf8_unicode_ci NOT NULL,

`version` int(11) NOT NULL,
`flags` int(11) NOT NULL,

`name` varchar(255) collate utf8_unicode_ci default NULL,

`description` varchar(255) collate utf8_unicode_ci default NULL,

`enName` varchar(255) collate utf8_unicode_ci default NULL,
`roleType` int(11) NOT NULL,

`fkDomain` varchar(80) collate utf8_unicode_ci default NULL,

PRIMARY KEY (`uri`)

)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `e_role` VALUES ('admin', '0', '0', '管理员', '管理员拥有很高的权限', 'admin', '0', '/');


这样的 SQL为什么不能执行

select * from e_role where 'admin' like '%'+uri+'%';


同样的SQL在 MS SQL中是可以执行的。。。

谢谢!!
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2010-12-15
  • 打赏
  • 举报
回复
用CONCAT OR FIND_IN_SET
vipper23 2010-12-15
  • 打赏
  • 举报
回复
mysql 用CONCAT(SRT1,STR2...STRN)连接字符串
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
[Quote]这样的 SQL为什么不能执行

select * from e_role where 'admin' like '%'+uri+'%';


同样的SQL在 MS SQL中是可以执行的。。。[/Quote]因为微软总喜欢搞出和别人不一样的东西。
ACMAIN_CHM 2010-12-15
  • 打赏
  • 举报
回复
select * from e_role where 'admin' like concat( '%',uri,'%');
zuoxingyu 2010-12-15
  • 打赏
  • 举报
回复
MSSQL字符串连接就是用的+号,而MYSQL是用CONCAT函数。
banxitan 2010-12-15
  • 打赏
  • 举报
回复
select * from e_role where 'admin' like concat('%',uri,'%'); 这样能执行,,,

因为这个SQL是用Hiberante生成的。。。。。Hiberante 的HQL 自动翻译成了 ‘+’做关键字的

zuoxingyu 2010-12-15
  • 打赏
  • 举报
回复
select * from e_role where 'admin' like concat(''%',uri,'%'');
banxitan 2010-12-15
  • 打赏
  • 举报
回复
mysq 版本如下:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 5.0.27-community-nt

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧