删除字段内的空间以匹配mysql
我有一个问题删除字段内的空间以匹配mysql,mysql,phpmyadmin,Mysql,Phpmyadmin,我有一个问题 SELECT course_locations.id as locId, courses.arrangements as arrangementStatus FROM course_locations LEFT JOIN courses ON course_locations.course_id = courses.id LEFT JOIN providers ON course_locations.provider_id =
SELECT
course_locations.id as locId,
courses.arrangements as arrangementStatus
FROM course_locations
LEFT JOIN courses ON course_locations.course_id = courses.id
LEFT JOIN providers ON course_locations.provider_id = providers.id
LEFT JOIN product_types ON product_types.id = courses.product_type_id
WHERE
courses.arrangements ='0'
AND providers.activated = 1
AND course_locations.published_status ='1'
AND course_locations.postcode IN(
SELECT
DISTINCT(Postcode) as post
FROM coordinaten
WHERE FK_Provincie ='10'
AND Latitude IS NOT NULL
AND Longitude IS NOT NULL)
我面临的问题是子查询
SELECT DISTINCT(Postcode) as post
FROM coordinaten
WHERE FK_Provincie ='10'
AND Latitude IS NOT NULL
AND Longitude IS NOT NULL
为我提供类似以下内容的结果'2222AD'、'1111AE'、'2542DR'
。
但是course_locations.postcode的值类似于这样的'2222 AD','1111 AE','2542 DR'
。
它在数字和字母之间有空格,所以当我查询时,我无法得到指定的结果。
如果字段之间有空格或没有空格,是否有任何方法可以获得匹配。
我不能使用like,因为值是以逗号的形式从子查询中分离出来的。
如果有人知道这个问题,请告诉我。您可以使用该功能
返回字符串str,其中包含来自\u str的所有字符串
替换为字符串至\u str。REPLACE()执行区分大小写的命令
从搜索时匹配
您的子查询将类似于:
SELECT DISTINCT(REPLACE(Postcode, ' ', '')) as post FROM coordinaten
WHERE FK_Provincie ='10'
AND Latitude IS NOT NULL
AND Longitude IS NOT NULL
示例Fiddle:正确的方法是清理数据,因此邮政编码格式是一致的
UPDATE [sometable] SET postcode=REPLACE(postcode,' ','');
从邮政编码中删除空格
如果没有这个选项,您可以这样做
... WHERE REPLACE(table_A.postcode,' ','') = REPLACE(table_B.postcode,' ','')
但这样做效率较低,因为每次比较都必须进行替换,而且会破坏索引
当然,您只需对邮政编码中可能有空格的表进行替换