mysql正则表达式&不同的价值观

时间:2010-10-15 23:19:34

标签: mysql

我正在使用mysql& perl的。对于我的数据库中的一个列,我有以下值:

123 Hollywood
345 New York
847 Hollywood
192 Boston
876 Chicago

我想选择所有不同的城市......即,结果将是:

Hollywood
New York
Boston
Chicago

有没有办法通过msyql做到这一点?我会想象某种REGEXP,但似乎无法得到逻辑:

SELECT * FROM table WHERE address REGEXP ''

1 个答案:

答案 0 :(得分:0)

假设您的地址始终采用<numbers><space><city>

格式
SELECT
  DISTINCT TRIM(LEADING SUBSTRING_INDEX(address, ' ', 1) FROM address) AS city
FROM
  locations

这是我用来验证查询工作的测试数据。请注意,我将测试表命名为locations。我的MySQL服务器是版本5.1.36:

--
-- Table structure for table `locations`
--

CREATE TABLE IF NOT EXISTS `locations` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `address` (`address`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=6 ;

--
-- Dumping data for table `locations`
--

INSERT INTO `locations` (`id`, `address`) VALUES
(1, '123 Hollywood'),
(2, '345 New York'),
(3, '847 Hollywood'),
(4, '192 Boston'),
(5, '876 Chicago');

这是我在该表上运行的确切查询:

SELECT DISTINCT TRIM(
LEADING SUBSTRING_INDEX( address, ' ', 1 )
FROM address ) AS city
FROM locations

这是我得到的结果:

**city**
Hollywood
Boston
New York
Chicago