sql省份城市
‘壹’ sql语句查询:根据地址查出城市
select
id,city
from
dbo.tblcity
where
trim(city)
=
'山西省太原市千峰南路东民科技大厦10号楼12层'
你那么写查不出来有可能是因为city这个字段里的数据,前边或后边有空格
---------补充--------
那没法弄,你有的里边不是市,是县,还有的前边带省份名称,你这里根本就没有一个统一的标准,所以,要么用存储过程,单纯的sql很难搞定
‘贰’ SQL语句,汇总显示各个省包含的所有城市
createtablehf
(Dept_codevarchar(10),
parentvarchar(10),
地点varchar(10))
insertintohf
select'1',null,'中国'unionall
select'100','1','广东'unionall
select'101','1','安徽'unionall
select'102','1','河南'unionall
select'103','1','河北'unionall
select'10001','100','深圳'unionall
select'10002','100','广州'unionall
select'1000101','10001','深圳A区'unionall
select'1000102','10001','深圳B区'
;withtas
(select1leave,parent,地点,cast(''asvarchar(10))rfromhfa
unionall
selectt.leave+1leave,c.parent,t.地点'地点',c.地点r
fromhfc
innerjointonc.Dept_code=t.parent
)
selectf.Dept_code,f.parent,f.地点,g.paths'地点路径'
fromhff
innerjoin
(selectd.地点,
stuff((select'/'+rfromte
wheree.地点=d.地点
orderbyleavedesc
forxmlpath('')),1,1,'')+d.地点'paths'
fromtdgroupbyd.地点)g
onf.地点=g.地点
/*
Dept_codeparent地点地点路径
--------------------------------------------------------
1NULL中国中国
1001广东中国/广东
1011安徽中国/安徽
1021河南中国/河南
1031河北中国/河北
10001100深圳中国/广东/深圳
10002100广州中国/广东/广州
100010110001深圳A区中国/广东/深圳/深圳A区
100010210001深圳B区中国/广东/深圳/深圳B区
(9row(s)affected)
*/
DROP
TABLE
IF
EXISTS
`dict_province`;
CREATE
TABLE
`dict_province`
(
`N_PROVID`
int(10)
unsigned
NOT
NULL
default
'0',
`S_PROVNAME`
varchar(30)
NOT
NULL,
`S_TYPE`
varchar(1)
default
NULL
COMMENT
'1
-
直辖市\r\n2
-
行政省\r\n3
-
自治区\r\n4
-
特别行政区\r\n5
-
其他国家\r\n见全局数据字典[省份类型]
\r\n',
`S_STATE`
varchar(1)
default
NULL
COMMENT
'0
-
禁用\r\n1
-
启用',
PRIMARY
KEY
(`N_PROVID`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
LOCK
TABLES
`dict_province`
WRITE;
/*!40000
ALTER
TABLE
`dict_province`
DISABLE
KEYS
*/;
INSERT
INTO
`dict_province`
VALUES
(1,'国外','5','1'),(10,'北京','1','1'),(11,'上海','1','1'),(12,'天津','1','1'),(13,'重庆','1','1'),(14,'河北','2','1'),(15,'山西','2','1'),(16,'内蒙古','3','1'),(17,'辽宁','2','1'),(18,'吉林','2','1'),(19,'黑龙江','2','1'),(20,'江苏','2','1'),(21,'浙江','2','1'),(22,'安徽','2','1'),(23,'福建','2','1'),(24,'江西','2','1'),(25,'山东','2','1'),(26,'河南','2','1'),(27,'湖北','2','1'),(28,'湖南','2','1'),(29,'广东','2','1'),(30,'广西','3','1'),(31,'海南','2','1'),(32,'四川','2','1'),(33,'贵州','2','1'),(34,'云南','2','1'),(35,'西藏','3','1'),(36,'陕西','2','1'),(37,'甘肃','2','1'),(38,'青海','2','1'),(39,'宁夏','3','1'),(40,'新疆','3','1'),(41,'香港','4','1'),(42,'澳门','4','1'),(43,'台湾','2','1');
/*!40000
ALTER
TABLE
`dict_province`
ENABLE
KEYS
*/;
UNLOCK
TABLES;
‘肆’ sql server中,一栏位格式如:国家-省-城市-... 现在我要按照城市来筛选数据,怎么使用sql语句来实现
SELECT * FROM 表名 WHERE (字段名 LIKE '%城市名%')
把其中的
表名、字段名、城市名
改成你的即可。