运行MySQL
查询时出现奇怪现象,该查询具有LIKE
和=
的某些条件。
SELECT
...
FROM
...
WHERE
products.productcode LIKE '590082QRV040'
AND ...
由于某些原因,在数据库中,一些产品代码在末尾存储了一个空格字符(可能是在插入数据的地方缺少修剪)。例如,上面的产品代码实际上存储为'590082QRV040 '
。奇怪的是,如果我使用以下条件运行查询:products.productcode LIKE '590082QRV040'
没有匹配,但对于products.productcode = '590082QRV040'
我得到了所需的结果。我只是想知道是什么原因。我认为LIKE
和=
之间的区别在于LIKE
中允许使用通配符。但现在我甚至没有通配符,所以这两者应该完全一样。
答案 0 :(得分:4)
documentation在这一点上相当清楚:
根据SQL标准,LIKE基于每个字符执行匹配, 因此它可以产生与=比较运算符不同的结果:
。 。
特别是,尾随空格很重要,但事实并非如此 使用=运算符执行CHAR或VARCHAR比较:
我强烈建议您修复数据:
app.js
-------
import PersonService from './services/PersonService';
import HomeController from './controllers/HomeController';
var app = angular.module('myApp', []);
app.service('PersonService', PersonService).controller('HomeController', HomeController);
HomeController.js
-----------------
import PersonService from '../services/PersonService';
function HomeController($scope, PersonService){
$scope.dept ='Department';
PersonService.getPerson().then(function(person) {
$scope.person = person;
});
}
HomeController.$inject = ['$scope','PersonService'];
export {HomeController};
PersonService.js
----------------
import Person from '../model/Person';
class PersonService {
constructor($q) {
this._$q = $q;
}
getPerson() {
return this._$q.when(new Person(101, 'Test Person'));
}
}
PersonService.$inject = ['$q'];
export {PersonService};
Person.js
----------
class Person {
constructor(id, name) {
this.id=id;
this.name = name;
}
}
export { Person };