访问SQL,选择除最后一个字段的所有字符之外的所有字符
我正在寻找一个MS访问类似于SUBSTRING的SQL函数,但并不像数据长度 不同。访问SQL,选择除最后一个字段的所有字符之外的所有字符
我有一个领域的一些值,我们会打电话给field1的
值长度从2变化到5
在任何情况下,我要选择除了最后一个字符的值。 因此,例如:
computer browser mouse game zip
变为:
compute browse mous gam zi
有这样的功能?
谢谢。
我只想:
select left(field1, len(field1) -1) from [table]
谢谢国王,这个作品完美。 – 2009-06-15 18:33:14
对于实际的模串,看看MID()函数。我对SubStr()应该做什么有特殊的想法(从我的Paradox时代开始),所以我很久以前编写了自己的SubStr()函数(它将输入字符串根据分隔符分成两个变量)。
从ISO/ANSI SQL-92标准:“SUBSTRING ...根据给定的数字起始位置和给定的数字长度返回从给定字符串中提取的字符串” - 因此ACE/Jet的Mid()表达式最接近。 – onedaywhen 2009-06-16 07:18:32
对于ACE/Jet,我会使用MID()
表达式。尽管LEFT()
表达式可以正常工作,但是MID()
是IMO的优选,因为它使代码更加便携,即将ACE/Jet专有MID()
表达式转换为标准SQL SUBSTRING
会更简单。
请注意,您需要测试文本的长度以避免出现令人讨厌的错误,例如当通过OLE DB在零长度字符串上测试当前接受的答案(由King Avitus使用LEFT()
表达式)'按原样'时,我收到错误,“数据提供者或其他服务返回了E_FAIL状态”,这不是很有用:(
我建议使用ACE/Jet的IIF()
表达(同样,易转化为标准SQL的CASE
表达式)来测试长度零长度字符串:
SELECT column_1,
MID(column_1, 1, IIF(LEN(column_1) = 0, 0, LEN(column_1) - 1))
AS column_1_truncated
FROM (
SELECT DISTINCT 'ab' AS column_1 FROM Calendar
UNION ALL
SELECT DISTINCT 'a' FROM Calendar
UNION ALL
SELECT DISTINCT '' FROM Calendar
UNION ALL
SELECT DISTINCT NULL FROM Calendar
) AS MyTable;
好奇,为什么你需要做到这一点吗?你的例子没有显示它,但是在最后有没有一个特定的字符表明你想摆脱? – JeffO 2009-06-15 17:26:14